Rails - 使用自定义路由的link_to

7

我是Rails的新手,请耐心等待。

我想在我的canteen模型上实现“喜欢”,所以我在我的canteen资源内创建了一个自定义路由。

resources :canteens do
  resources :meals
  resources :comments
  match "/like", :to => "canteens#like", :as => "like"
end

因此,我在食堂控制器中创建了这个操作,在那里我只是增加了一个计数器。
def like    
  canteen = Canteen.find(params[:canteen_id])
  Canteen.increment_counter("likes_count", canteen.id)
  redirect_to canteen
end

所以,手动输入URL localhost:3000/canteens/1/like 运行得很好,但显然我想创建一个按钮,所以我做了以下操作:
<h2>Likes count</h2>
<p><%= @canteen.likes_count %> likes</p>
<p><%= link_to "Like this canteen", canteen_like_path %></p>

但是它不起作用。我检查了rake路由,它在那里(canteen_like)。我做错了什么?


你能展示一下你的rake routes输出吗? - Leo Correa
1个回答

11

您需要将一个Canteen对象传递到路径中。如果没这样做,Rails就不知道您指的是哪个食堂:

<%= link_to "Like this canteen", canteen_like_path(@canteen) %>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接