2011-10-05 86 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) 
相关问题