2015-10-21 38 views
1

我正在研究一個基本的博客系統,其中#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 %> 

對於一些長期的原因,我希望能夠預先填充兩個遊客領域和評論領域。在#後/顯示控制器我可以預填充訪問者的全名,像這樣:

def show 
@post = Post.find(params[:id]) 

@visitor = Visitor.new(fullname: 'John', comments: [Comment.new(message: 'not working')]) 
... 
end 

但無法弄清楚如何預填充fields_for的值,即(評論:...)做有人有主意嗎?

上面的代碼沒有使用提供的默認值填充textarea,如果是的話,會很好。

回答

1

替代

<%= form_for :visitor, url: comment_visitors_path do |f| %> 

與 <%=的form_for @visitor,網址:comment_visitors_path做| F | %>

這對我來說伎倆。

另外,你一定要使用

accepts_nested_attributes_for :comments 
在您的訪客模式

?如果你不這樣做,fields_for將不會預填充評論(或正確工作)。

+0

哦,是的,我的訪客模型中有評論意見: –

+0

我已經編輯了答案,我意識到使用:訪客符號在本地並不適用。 –