我正试图在控制器方法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
。有什么想法吗?
答案 0 :(得分:7)
在控制器中使用此语法:
render "new", :locals => { :template => @doc.template_id }
表示您正在呈现new.html.erb
模板,而不是部分模板。您无法将局部变量传递给非局部视图。您应该做的是调用render "new"
,并根据需要在该视图中引用@doc
。