我想在写带有 rails 变量的 js 代码,但又不想放在 html.erb 里,想用外加的 js.erb 文件,怎么做比较好?能把 js.erb 放到 app/assets/javascript 文件夹里吗?
assets 编译之后就不会变了,放常量可以,放不了变量。
不行的,app/assets/javascript 文件夹里面放的应该是.js 文件
你要想这么做,你可以把那个 rails 的变量放在页面中的一个隐藏域中
例如:
<input type="hidden" id="user_name" value="<%= @user.name %>"/>
在 js 中就能取到这个@user.name的值 jquery 代码如下 var user_name = $("#user_name").val();
var user_name = $("#user_name").val();
开发应该有一个思想,js 代码归 js 代码,html 归 html,ruby 代码归 ruby 代码
这样看起来很舒服
多谢 LS 两位大牛, :D 知道怎么做了。
我觉得还是这样吧
<%= javascript_tag do %> window.productsURL = '<%= j products_url %>'; window.products = <%= raw Product.limit(10).to_json %> <% end %>
http://railscasts.com/episodes/324-passing-data-to-javascript?view=asciicast
同样的问题,我最终还是屈服将 js 放在 html 中,如https://github.com/songjiayang/cms_6bey/blob/master/app/views/common/_deal_js.html.erb
#5 楼 @small_fish__ 这个好,可以用 render 啊!!聪明。
我也有过: https://github.com/wushexu/rpmp/blob/master/app/views/application/tune_order.js.erb 不过返回的是 js,不是 html
这个是 html: https://github.com/wushexu/rpmp/blob/master/app/views/application/sort-js.html.erb
#8 楼 @wushexu 后端 https://github.com/wushexu/rpmp/blob/master/app/controllers/sort_support.rb