我正在使用单表继承(STI)来创建不同类型的文章。但是现在我在创建文章时遇到了问题。(我只能在控制台中完成)。
这是我的模型
文章.rb
class Article < ActiveRecord::Base
attr_accessible :content, :title
validates :title, :presence => true
end
和 TutorialArticle.rb
class TutorialArticle < Article
attr_accessible :author
validates :author, :presence => true
end
这是我的_form
<%= form_for(@article) do |f| %>
<%= f.hidden_field :type %>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :content %><br />
<%= f.text_area :content %>
</div>
<%= render :partial => "edit" + f.object.type.downcase, :locals=>{:f=>f} %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
但是现在我在 create 方法的 article_controller.rb 中有一个问题
def create
# create the desired subtype based on the hidden field :type in the form
@article = Object.const_get(params[:article][:type]).new(params[:article])
if @article.save
flash[:notice] = "Successfully created post."
redirect_to @article
else
render :action => 'new'
end
end
现在,当我填写表格并按创建文章按钮时,出现以下错误
undefined method '[]' for nil:NilClass
我什至尝试硬编码以了解问题所在以及是否尝试更改@article = Object.const_get(params[:article][:type]).new(params[:article])
到
@article = TutorialArticle.new(params[:article])
我的创建方法不保存文章。它只是重定向以创建新的文章页面。
你能帮我解决这个问题吗?