2010-11-21 49 views
0

我有一个状态更新和注释数据库表。保存与状态更新关系的评论对象.build ruby​​

用户有很多状态更新,状态更新有很多评论。与Facebook类似,当用户朋友转到用户供稿页面(显示页面)时,他们应该能够对用户状态更新发表评论。

我遇到了保存用户朋友评论的问题..我的代码在下面..我认为它与评论控制器,创建方法有关“@comment = @ statusupdate.comments.build(params [ :comment])“

任何指导非常感谢!谢谢!

class UsersController < ApplicationController 
    def show 
    @user = User.find(params[:id]) 
    @statusupdates = @user.statusupdates.paginate(:page => params[:page], :per_page => 25) 
    @statusupdate = Statusupdate.new  
    @comment = Comment.new 
    end 
end 

show.html.erb 
    <% form_for @statusupdate do |f| %> 
    <%= f.error_messages %> 
    <div class="field"> 
    <%= f.text_field :content %> 
    </div> 

<% @statusupdates.each do |s| %> 

    <%= s.content %><br /> 

    <% form_for @comment do |f| %> 
    <%= f.error_messages %> 
     <div class="field"> 
     <%= f.text_field :comment %> 
     </div> 
     <div class="field"> 
     <%= f.hidden_field :user_id, :value => current_user.id %> 
     </div> 
     <div class="actions"> 
     <%= f.submit "Submit" %> 
     </div> 
     <br><br> 
    <% end %> 
    <% end %> 

class CommentsController < ApplicationController 
    def create 
    @comment = @statusupdate.comments.build(params[:comment]) 
     if @comment.save 
     flash[:success] = "Comment created!" 
     redirect_to root_path 
    else 
     @feed_items = [] 
     render 'pages/home' 
    end 
    end 
end 

+0

你可以提供更多的细节问题是什么?像Rails给出的错误是什么? – dteoh 2010-11-22 03:41:32

回答

0

show.html.erb-我改变了状态更新的评论形式的顶线:

<% form_for (s, s.comments.build) do |f| %> 
... 

class CommentsController < ApplicationController 
    def create 
    @statusupdate = statusupdate.find(params[:statusupdate_id]) 
    @comment = @statusupdate.comments.create(params[:comment]) 
    ... 

我完全不知道这是怎么回事上,但它的工作对我来说〜希望它可以帮助别人out〜

0

检查HTML表单,以确保其右。另请参阅发送到创建操作的参数。

我看到的主要问题是状态更新和注释的表单是嵌套的,都使用块参数f。这可能会导致事情变得非常奇怪(尤其是因为在ruby 1.8和1.9之间block参数的范围不同)。它也似乎你实际上并不希望嵌套的形式。你也应该在你的html中修改缩进。