如何从rails中的控制器填充嵌套字段

时间:2015-10-21 20:21:18

标签: ruby-on-rails ruby ruby-on-rails-4

我正在开发一个基本的博客系统,在我的#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,如果有的话会很好。

1 个答案:

答案 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将不会预填充评论(或正常工作)。