在 js 里面我可以这样拼接 url 吗 var $search_url = <% url_for :controller => "plan", :action => "show" %> + $Text_search.val() + ".json"
这样写当然是没问题的,不过总归看着让人不舒服,不过你可以试试用一个隐藏的 html 标签(如:一个隐藏的 a 标签)然后通过 js 去获取这个 a 的 href。
# let us say
# <%= url_for :controller => "plan", :action => "show" %> => '/plans/show'
var $search_url = <%= url_for :controller => "plan", :action => "show" %> + $Text_search.val() + ".json"
被编译成这样
var $search_url = /plans/show + $Text_search.val() + '.json'
/plans/show 被js认为是undefined 因为不属于任何已知的数据类型
所以
var $search_url = "<%= url_for :controller => 'plan', :action => 'show' %>" + $Text_search.val() + '.json'
这样才会被正确编译为
var $search_url = “/plans/show” + $Text_search.val() + '.json'
注意一下单引号和双引号的区别
单引号表示里面的内容不用被翻译 就是一个字符串 双引号表示里面的特殊内容要被翻译
puts '#{Rails.root}'
=> #{Rails.root}
puts "#{Rails.root}"
=> /home/xxxx/xxxx
#10 楼 @shawnyu 其实这个我懂的,只是没想到要用双引号阔起来,我快疯了。。undefined method `url_for' for #<#Class:0x000000059bb248:0x00000006c7ba18>