2011-10-05 38 views
0

在我的應用程序中,我有User,PostComment模型。如何將多個值傳遞給Rails中的創建操作?

User想對Post發表評論時,來自Comments控制器的新動作接管。顯示Post(將被註釋)並且User輸入他的Comment

但是,當用戶提交時,我想將Post.id和Comments.content傳遞給創建操作。我怎麼做?

這裏是comments/new.html.erb

<%= form_for @comment do |f| %> 
<%= render 'shared/error_messages', :object => f.object %> 
<div class="field"> 
<%= f.text_area :comment %> 
</div> 
<div class="actions"> 
<%= f.submit "Done" %> 
</div> 
<% end %> 

感謝大家。我做了嵌套的路由和我new.html.erb現在有

<%= form_for [@post,@comment] do |f| %> 
<%= render 'shared/error_messages', :object => f.object %> 
<% f.hidden_field :post %> 
<div class="field"> 
<%= f.text_area :comment %> 
</div> 
<div class="actions"> 
<%= f.submit "Done" %> 
</div> 
<% end %> 

但是我得到:未定義的方法`評論」,我不能明白這開溜了。

回答

1

我的猜測是,每一個Comment必須屬於a Post如果是這種情況,那麼這似乎是嵌套路線的最佳候選者。 http://guides.rubyonrails.org/routing.html#nested-resources

resources :posts do 
    resources :comments 
end 

所以你的情況的帖子ID,註釋ID都將是URL的一部分:

# Will submit to a URL like /posts/1/comments 
# or /posts/1/comments/1 
<%= form_for [@post,@comment] do |f| %> 
    <%= render 'shared/error_messages', :object => f.object %> 
    <div class="field"> 
    <%= f.text_area :comment %> 
    </div> 
    <div class="actions"> 
    <%= f.submit "Done" %> 
    </div> 
<% end %> 

您將需要處理POST_ID在您的意見控制器動作。

0

首先,您必須將Post.id傳遞給意見新操作。喜歡的東西

link_to "Add comment", new_comment_path(params[ :id ]) 

我假定你下面的約定所以params[ :id ]Post.id。後來在你Comment#create實例化新評論與

@comment = Comment.new(:post_id => params[ :id ]) 

這將創建與發表評論。最後形成了新的評論

<%= form_for @comment do |f| %> 
    <%= render 'shared/error_messages', :object => f.object %> 
    <%= f.hidden_field :post_id %> 
    <div class="field"> 
    <%= f.text_area :comment %> 
    </div> 
    <div class="actions"> 
    <%= f.submit "Done" %> 
    </div> 
<% end %> 
0

在(使用HAML)

=form_for(@comment, :as => :comment) do |f| 
    =f.hidden_field :post_id 
    =f.hidden_field :user_id 
    =f.text_area :comment 
    =f.submit "Submit" 

,並在評論#新控制器的觀點:

@comment = Comment.new(:user_id => @user.id, :post_id => @post.id) 
相關問題