2011-08-23 51 views
2

我有一个简单的系统,其中照片有很多评论。 我确定我没有这样做,但我正在尝试为评论构建一个简单的评分系统。 comment.rating从0开始,可以上升。为什么我的增量不能正常工作?

这是我的意见控制器

class CommentsController < ApplicationController 

    def increment 
    @comment = Comment.find(params[:id]) 
    @comment.rating += 1 
    redirect_to(@photo) 
    end 

end 

的部分我觉得increment方法是好的,但我怎么打电话是不是:

<%= link_to "+", :controller => 'comments', :method => 'increment' %> 

这是行不通的。我意识到这是一个基本问题,但我会很感激任何建议。谢谢。

+0

非常感谢大家的指点。我以为我比我更进一步。 –

回答

1

我相信你不及格评论:id来PARAMS。

你可以通过定义你的routes.rb文件中像这样的路线这样做:

match 'increment_rating/:comment_id' => 'Comments#increment', :as => 'increment_rating' 

increment行动现在

def increment 
    @comment = Comment.find(params[:comment_id]) 
    ... 
end 

,然后开始从视图与

叫它
<%= link_to '+', increment_rating_path(comment.id) %> 

其中comment.id给出了id评论你想要增加的评论

1
<%= link_to "+" , :controller => "comments", :action => "increment", :id => @comment %> 
1
<%= link_to "+" , :controller => "comments", :action => "increment", :id => comment.id %> 

请记住,通常这样的行动将使用POST或PUT,在这种情况下,你需要指定:法之一:邮寄或:放。

如果已经添加在航线的增加,你也可以使用:

<%= link_to "+", increment_comment_path(comment.id) %>