Pla*_*Ton 4 javascript ruby-on-rails coffeescript
我想在rails中编写一个非常简单的javascript计算器,它将输入字段的数量乘以存储在rails变量中的数字(@ item.base_price)
所以,在javascript/coffeescript方面,它粗略地说:
# app/assets/javascript/items.js.coffee
$ ->
$('#item_quantity').change ->
quantity_val = $(this).val()
$('#total_amount').html(quantity_val * <%= I_WANT_@ITEM.BASE_PRICE_HERE %>)
Run Code Online (Sandbox Code Playgroud)
我知道如何通过每次change()调用的ajax调用来实现这一点,但我认为必须有一个优雅的,希望不显眼的rails方式,每次都不会命中服务器.
任何建议非常感谢
如果您使用的是rails 3.1,则可以利用资产管道对javascript文件进行一些预处理,然后再进行提供.要执行此操作,只需更改文件扩展名:
items.js.coffee
Run Code Online (Sandbox Code Playgroud)
至
items.js.coffee.erb
Run Code Online (Sandbox Code Playgroud)
然后你就可以像在带有<%= %>标签的视图中一样为你的javascript添加ruby .您可能遇到的唯一问题是,您的items.js文件将被提供给您的任何应用程序控制器方法的每个请求.因此,最好编写一个辅助方法,只有在初始化实例变量时才会返回值
例如,在items_helper.rb中
def item_price
if @item
@item.base_price
else
0
end
end
Run Code Online (Sandbox Code Playgroud)
编辑:更多关于资产管道:
http://guides.rubyonrails.org/asset_pipeline.html
| 归档时间: |
|
| 查看次数: |
5240 次 |
| 最近记录: |