2012-08-23 47 views
0

我很遗憾地遇到这个问题,当我尝试创建Review时,Product_id保持为零。什么是最简洁的方式来填补我想要审查的产品?评论系统,has_many,belongs_to

Reviews_controller

def create 
@user = current_user 
@review = @user.reviews.new(params[:review]) 
if @review.save 
    redirect_to products_path, notice: 'Thank you for your review' 
else 
    render 'new' 
    end 
end 

我的产品,审查和用户都设置了与的has_many和belongs_to的关系。

新观点的评论

%h1 Write a Review 

= form_for @review do |f| 
    %fieldset 
    = f.label :review 
    = f.text_area :review 
    %fieldset 
    = f.label :rating 
    = f.text_field :rating 
    %fieldset 
    = f.submit 'Post Review', class: 'btn btn-large btn-primary' 

我知道,我没有找到产品 - 如何得到的?

回答

0

因为要创建通过关联使用对象建立

@review = @user.reviews.build(params[:review]) 

,将提取用户的ID和它添加到user_id说明在你的评论对象。我需要更多的信息来查找产品,你可以最有可能在您的评论的形式添加hidden_​​field将有产品编号

<%= hidden_field :product, @product.id %> #not sure how you are currently finding your product 
+0

是的,但它仍保留着PRODUCT_ID空白。我知道我实际上不知何故必须指定,但如果我用@product = Product.find(params [:id])来做,我只是得到一个'找不到没有ID的产品'错误 –

+0

Post代码您的视图在您创建审查的地方,我没有关于如何找到该产品的信息 –

+0

审查应该属于_to:product和Product should:has_many:reviews。你需要有一个带有CRUD动作的产品控制器,然后在产品的每个展示页面上渲染审阅部分 –