我已经编写了一种计算特定部分投票的方法,并将其显示在视图文件中。但是,当我调用此方法时,计数不会增加。我应该在以下方法中进行任何更改
控制器中的voteme方法代码如下:
def voteme(num)
@section = Section.find(params[:id])
@section.vote += num
end
和视图文件中的代码是
<%= link_to" up",:url => voteme_section_path(1),:html => {:method => :post}%>
也可以有人建议我显示更新计数值的代码。我在剖面模型中有一个投票字段。
答案 0 :(得分: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
答案 1 :(得分:0)
更改值后尝试添加@ section.save。
这个逻辑也应该在模型中,而不是在控制器中。控制器应该只在模型和视图之间来回传递信息。
答案 2 :(得分:0)
def voteme(num)
@section = Section.find(params[:id])
@section.update_attribute('vote', @section.vote+1)
end