嘿,伙计们,我有一个简单的带有一些验证的create方法,每当create方法由于验证错误而失败时,它就会重新呈现“new”操作。
问题是在我的新操作/视图中,我有一个局部变量,该变量在操作中建立并传递给分部,以呈现用户正在创建的内容的一些相关信息。
现在,当我的创建操作失败,我试图重新呈现“新”操作时,我得到的总是令人敬畏的
undefined method `cover' for nil:NilClass
错误。
处理在渲染上重新建立操作的局部变量的最佳方法是什么,而不是重新重定向到该操作,以及用户丢失其输入的数据?
为了澄清。以下是一些示例代码:
#controller.rb
def new
@summary = User.find(params[:user_id])
@page = Page.new
end
def create
@page = Page.new(params[:page])
if @page.save
redirect_to @page
else
render :action => 'new'
end
end
在我的new.html.erb文件中,我有类似的东西
<%= @summary.cover %>
#page form etc...