我使用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
我做错了什么?
答案 0 :(得分:4)
您需要使用:partial not:action
<%= escape_javascript(render :partial => "materials/change_prize", :locals => { :xxxx => @xxxx }) %>
n.b。 xxxx是您需要将对象传递给部分
答案 1 :(得分:2)
部分必须以下划线开头。因此,将您的文件名重命名为“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