渲染html.erb文件时未定义的方法`formats'

时间:2011-05-10 07:08:07

标签: javascript jquery ruby-on-rails ruby-on-rails-3

我使用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

我做错了什么?

2 个答案:

答案 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