Rails:format.html中的params {render ...}

时间:2013-07-08 00:37:13

标签: ruby-on-rails ruby-on-rails-3 templates

我正试图在控制器方法format.html中传递params,如下所示:

def create
  @doc = Doc.new(params[:doc])
  respond_to do |format|
    if @doc.save
      format.html { redirect_to share_url(@doc.user.ftp, @doc) }
    else
      format.html { render "new", :locals => { :template => @doc.template_id } }
    end
  end
end

我得到一个no方法错误,它告诉我我正在向局部变量中的:template发送正确的参数:

local_assigns {:template=>4}

我有什么东西让我无法工作吗?它应该重定向到doc#new操作,但它会转到doc#index。有什么想法吗?

1 个答案:

答案 0 :(得分:7)

在控制器中使用此语法:

render "new", :locals => { :template => @doc.template_id }

表示您正在呈现new.html.erb模板,而不是部分模板。您无法将局部变量传递给非局部视图。您应该做的是调用render "new",并根据需要在该视图中引用@doc