gpt4 book ai didi

ruby-on-rails - Ruby on Rails 创建方法失败时,渲染会丢失局部变量

转载 作者:行者123 更新时间:2023-12-02 07:13:43 24 4
gpt4 key购买 nike

大家好,我有一个带有一些验证的简单 create 方法,每当 create 方法由于验证错误而失败时,它都会重新呈现"new"操作。

问题出在我的新 Action / View 中,我有一个在 Action 中建立并传递给局部变量的局部变量,以将一些相关信息呈现给用户正在创建的内容。

现在,当我的创建操作失败并尝试重新渲染"new"操作时,我得到了总是很棒的效果

undefined method `cover' for nil:NilClass

错误。

在渲染上重新建立我的 Action 的局部变量而不是再次重定向到 Action 并且用户丢失他们输入的数据的最佳方法是什么?

澄清一下。下面是一些示例代码:

#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...

最佳答案

当您创建对象并尝试保存它时,该对象仍然保存值和验证错误,因此将其传递到渲染中。通常它在你的 create 方法中和在你的 new 方法中的命名相同,所以模板可以正常工作。

if @my_object.save
flash[:notice] = "Successfully created."
redirect_to ....
else
render :action => 'new' #assuming new.html.erb uses @my_object
end

关于ruby-on-rails - Ruby on Rails 创建方法失败时,渲染会丢失局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3056001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com