1

我编写了一种方法来计算特定部分的投票并将其显示在视图文件中。但是当我调用这个方法时,计数不会增加。我应该对以下方法进行任何更改

控制器中 voteme 方法的代码如下:

     def voteme(num)
         @section = Section.find(params[:id])
         @section.vote += num
     end

并且视图文件中的代码是

<%= link_to "up", :url => voteme_section_path(1), :html => { :method => :post }%>

也有人可以建议我显示更新计数值的代码。我在部分模型中有一个投票字段。

4

3 回答 3

1

在您的视图文件中

<%= link_to "up", voteme_section_path(1), :method => :post %>

但我有一个问题,你正在投票反对一个部分。那么为什么你要传递 1 给它。如果您将其存储在 @section 变量中,则应该传递 section 对象。因此,您可以将链接修改为

<%= link_to "up", voteme_section_path(@section), :method => :post %>

在你的路线文件中,我猜你需要做这样的事情

resources :sections do
  member do
    post 'voteme'
  end
end

在部分控制器中,“voteme”操作

def voteme
  @section = Section.find_by_id(params[:id])

  unless @section.blank?
    @section.update_column('vote', @section.vote + 1)
  else
    flash[:notice] = 'Sorry something goes wrong'
  end

  redirect_to your-path-that-you want-to-show.
end
于 2013-07-05T06:24:20.037 回答
0

更改值后尝试添加@section.save。

这个逻辑也应该在模型中,而不是在控制器中。控制器应该只在模型和视图之间来回传递东西。

于 2013-07-05T05:46:58.007 回答
0
def voteme(num)
  @section = Section.find(params[:id])
  @section.update_attribute('vote', @section.vote+1)
end
于 2013-07-05T05:49:16.797 回答