我正在开发一个基本的博客系统,在我的#post / show中我有一个提交访问者和评论模型的表单。帖子/节目在页面底部有这个表格:
<%= form_for :visitor, url: comment_visitors_path do |f| %>
<p>
<%= f.label :fullname %><br>
<%= f.text_field :fullname %>
</p>
<%= f.fields_for :comments do |c| %>
<p>
<%= c.label :message %><br>
<%= c.text_area :message %>
</p>
...
<% end %>
<% end %>
由于某种原因,我希望能够预先填充访问者字段和评论字段。在#post / show控制器中,我可以像这样预先填充访问者的全名:
def show
@post = Post.find(params[:id])
@visitor = Visitor.new(fullname: 'John', comments: [Comment.new(message: 'not working')])
...
end
但无法弄清楚如何预先填充fields_for的值,即(评论:...)是否有人有任何想法?
上面的代码没有用提供的默认值填充textarea,如果有的话会很好。
答案 0 :(得分:1)
替代
<%= form_for :visitor, url: comment_visitors_path do |f| %>
与 &lt;%= form_for @visitor,url:comment_visitors_path do | f | %GT;
这对我有用。
另外,你确定使用
accepts_nested_attributes_for :comments
在您的访客模型中?如果您不这样做,fields_for将不会预填充评论(或正常工作)。