Ruby on rails 错误:在创建方法中呈现新操作
我的应用程序有两个关联模型:杂志和文章: 在杂志展示页面,我有“新文章”链接,比如: 因此,我可以使用文章形式_,例如:Ruby on rails 错误:在创建方法中呈现新操作,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我的应用程序有两个关联模型:杂志和文章: 在杂志展示页面,我有“新文章”链接,比如: 因此,我可以使用文章形式_,例如: <%= simple_form_for(form_for_params) do |f| %> ... 当title属性出现验证错误,并且呈现新操作时,就会出现问题。在这一刻,我得到了一条消息:NilClass:Class的未定义方法'model\u name',在表单\u for的第一行中。我认为这是因为@magage参数传入了helper 如果不使用重定向,
<%= simple_form_for(form_for_params) do |f| %> ...
当title属性出现验证错误,并且呈现新操作时,就会出现问题。在这一刻,我得到了一条消息:NilClass:Class的未定义方法'model\u name',在表单\u for的第一行中。我认为这是因为@magage参数传入了helper
如果不使用重定向,我如何解决此问题?(我想保留表单中填写的其他属性。)您的
form\u for_params
方法返回nil
,因为action\u name
设置为“创建”,而不是“新建”或“编辑”
试试这个:
elseif action_name == 'new' or action_name == 'create'
[@magazine, @article]
成功了!这么简单,我没有意识到。我认为因为我使用的是“render:action=>:new”,所以我只需要验证“new”操作。非常感谢你!
<%= link_to 'New article', new_magazine_article_path(@article)
module ArticlesHelper
def form_for_params
if action_name == 'edit'
[@article]
elsif action_name == 'new'
[@magazine, @article]
end
end
end
<%= simple_form_for(form_for_params) do |f| %> ...
respond_to :html, :xml, :js
def new
@magazine = Magazine.find(params[:magazine_id])
@article = Article.new
end
def create
@magazine = Magazine.find(params[:magazine_id])
@article = @magazine.build_article(params[:article])
if @article.save
respond_with @magazine # redirect to Magazine show page
else
flash[:notice] = "Warning! Correct the title field."
render :action => :new
end
end
elseif action_name == 'new' or action_name == 'create'
[@magazine, @article]