![](/img/trans.png)
[英]Coffeescript - How to convert a javascript into coffeescript in ruby on rails?
[英]How can I render via CoffeeScript in Ruby on Rails 4
我試圖解決這個問題一段時間沒有結果。 我想在rails 4中使用CoffeeScript傳遞變量並將渲染加載到div中。(我正在使用SpreeCommerce平台)。
視圖:
<%= link_to taxonomy.name,root_path+'t/'+tid, {class: "uno", remote: true} %>
控制器:
respond_to do |format|
format.html
format.js # menu.js.coffee.erb
end
menu.js.erb.coffee:
$('div#productos').html("<%= escape_javascript(render :partial => /shared/products) %>")
我想加載頁面'_products.erb.html'並部分處理我給它的變量。 一旦我知道,視圖和控制器都可以,問題出在menu.js.erb.coffee中
任何幫助都會被貶低!
額外:
我已將擴展名修改為.js.coffee.erb。 當我嘗試運行該應用程序時,它顯示我:
“##:0xa70317c>的未定義方法`render'”
我嘗試使用<%= raw escape_javascript( render :partial =>...
幾乎總是“render”方法給我帶來問題。
新信息:
我在Gemfile中添加了gem'coffee gem 'coffee-script'
(然后是' bundle install
')。 現在,當我點擊link_to時,它會將我顯示為HTML <%= escape_javascript(render:partial => / shared / products)%>作為文本而不是加載“部分”...有什么建議嗎?
在經歷了同樣的問題后,我寫了一篇關於這個的帖子 。
你需要:
menu.js.coffee
。 后綴.erb
導致它不被評估為CoffeeScript。 raw
來逃避它。 我在我的網站上使用了這兩個。 以下是它的外觀:
<%= raw render 'path/to/menu.js.coffee' %>
它仍在您的CoffeeScript中處理ERB。
我建議將它從menu.js.erb.coffee
更改為menu.js.coffee.erb
。
Rails將從右到左處理文件擴展名。 現在意思是,你的文件首先被視為coffeescript,然后被視為ruby,最后被視為javascript。 看起來你想首先進行ruby替換,然后將coffeescript解析為javascript,這樣就是menu.js.coffee.erb
首先,您應該將文件名從menu.js.erb.coffee
更改為menu.js.coffee.erb
,您需要配置文件如下,這是cervinka對coffee-rails問題#36的貢獻
配置/初始化/ coffee_erb_handler.rb
ActionView::Template.register_template_handler 'coffee.erb', Coffee::Rails::TemplateHandler # without this there will be template not found error
class ActionView::PathResolver < ActionView::Resolver
EXTRACT_METHODS = %w{extract_handler_and_format_and_variant extract_handler_and_format} # name for rails 4.1 resp. 4.0
method_name = EXTRACT_METHODS.detect{|m| method_defined?(m) || private_method_defined?(m)}
raise 'unknown extract method name' if method_name.nil?
old_method_name = "old_#{method_name}"
alias_method old_method_name, method_name
define_method(method_name) do |path, default_formats|
self.send(old_method_name, path.gsub(/\.js\.coffee\.erb$/, '.js.coffee'), default_formats)
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.