Rails 可以在单独的 js 文件中使用 "var online_users = #{@users}"

hlcfan · 2012年04月18日 · 最后由 jean 回复于 2012年04月18日 · 2591 次阅读

大家好,

可以在单独的 js 文件中使用 var online_users = #{@users} 吗?

var online_users = "<%= @users %>"

在单独的 js 文件里,不 work 吧

只能在 views 裡寫 js, 若不想這麼作,gon 很適合。

gazay/gon http://j.mp/JeszBk

可以在 helepr 里 expose 些全局的 js 对象

# app/helpers/application_helper.rb
module ApplicationHelper
  def render_js_app_object
    {
      :user => current_user
      :users => @users
    }.to_json.html_safe
  end
end

# app/views/layouts/application.html.erb

  ...
  <%= javascript_tag do %>
    window.app = <%= render_js_app_object %>;
  <% end %>
  <%= javascript_include_tag "application" %>
  ...

用 .js.erb 后缀

#5 楼 @Rei 你好,用后缀的话需要写 render 吗?

#6 楼 @hlcfan 这个 js 文件是怎么调用的?

如果是 respond_to ... format.js,可以自动找到,不过我印象中要写个 render :layout => false

ruby-china/app/assets/javascripts/app.coffee example: $(to).before("<div data-alert class='alert-message'><a class='close' href='#'>X</a>#{msg}</div>")

需要 登录 后方可回复, 如果你还没有账号请 注册新账号