Im 使用 Rails 3.0.3 和 ruby 1.8.7
我想在materials/change_prize.js.erb文件中渲染/materials/change_prize.html.erb。
change_prize.js.erb:
$("#content").html("<%= escape_javascript(render(:action => 'materials/change_prize.html.erb')) %>");
材料控制器:
def change_prize
@material = Material.find(params[:id])
respond_to do |format|
format.js
format.html
end
end
routes.rb:
resources :materials do
member do
get 'change_prize'
post 'change_prize'
end
end
但是当我加载JS文件时,出现此错误:
undefined method `formats' for nil:NilClass
我做错了什么?
你需要使用 :p artial not :action
<%= escape_javascript(render :partial => "materials/change_prize", :locals => { :xxxx => @xxxx }) %>
注意:xxxx 是如果您需要将对象传递给部分
部分必须以下划线开头。因此,请将您的文件名重命名为"materials/change_prize.html.erb"为"materials/_change_prize.html.erb"。但是请注意,当通过渲染调用调用它时,您引用的文件不带下划线。
$("#content").html("<%= escape_javascript(render(:action => 'materials/change_prize.html.erb')) %>");
文件名 : app/views/materials/_change_prize.html.erb