我正在使用一个非常简单的论坛软件来帮助我在铁轨上弄湿红宝石。我想要做的是在用户创建新主题时为帖子内容添加文本区域,但每次我尝试在主题表单中添加它时,我都会收到以下错误:
NoMethodError in Topics#new
Showing /Users/Ken/dev/forums/app/views/topics/_form.html.erb where line #11 raised:
undefined method `merge' for :content:Symbol
这是我的新主题表单:
<%= form_for @topic do |f| %>
<%= f.error_messages %>
<% if params[:forum] %>
<%= f.hidden_field :forum_id, :value => params[:forum] %>
<% end %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.text_area :post, :content %>
</p>
<p><%= f.submit "Create" %></p>
<% end %>
这是我的主题模型:
class Topic < ActiveRecord::Base
attr_accessible :name, :last_poster_id, :last_post_at
belongs_to :forum
has_many :posts, :dependent => :destroy
end
这是我的帖子模型:
class Post < ActiveRecord::Base
attr_accessible :content
belongs_to :topic
end
如何在主题表单中使文本区域正常工作?我是否需要将其添加到主题模型才能访问它,如果是,我该怎么做?
答案 0 :(得分:3)
您可以使用fields_for帮助程序。请参阅此链接http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for。第一个参数可以是Post.new,然后您可以在该块中包含主题文本字段。最终结果是一个嵌套的表单,您可以在控制器中进行解析。