为在rails中的一个记录上操作的操作添加路由

时间:2011-02-17 15:46:49

标签: ruby-on-rails ruby routes

我想在我的rails应用程序中创建一个方法,它会增加与记录绑定的值。

控制器中的方法如下所示:

def upvote
  @spot = Spot.find(params[:id])
  @spot.rating += 1

  respond_to do |format|
    format.html # show.html.erb
    format.xml  { render :xml => @spot }
  end
end

然后在“spot / 1”查看记录时,我包含以下代码:

<%= link_to 'Upvote', @spot, :confirm => 'Are you sure?', :method => :upvote %>

单击时会抛出错误:

"No route matches "/spots/1""

即使我已经在/ spots / 1。我知道这是一个路线问题,但我似乎无法给这个方法一个有效的路线......

1 个答案:

答案 0 :(得分:0)

参数:method标识HTTP动词(GET,POST,UPDATE,...),而不是要调用的方法。

要添加新操作,请编辑routes.rb文件

resources :sposts do
  member do
    put :upvote
  end
end

然后使用命名路线

<%= link_to 'Upvote', upvote_spot_path(@spot), :confirm => 'Are you sure?', :method => :put %>