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

我想在食堂模型上实现“赞”,因此我在食堂资源中创建了一条自定义路线

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>


而且它不起作用。我检查了耙路,就在那里(canteen_like)。
我究竟做错了什么?

最佳答案

您必须将Canteen对象传递到路径。如果您不这样做,Rails将不知道您的意思是哪个食堂:

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

08-04 17:55