我有很多通过协会。
公司有很多用户跟随。 我希望用户能够关注公司。 - 我正在为用户使用Devise。
我的公司控制器中有以下行动。
def follow
@firm.users << current_user
end
在我的routes.rb
中resources :firms do
post :follow, on: :member
end
并在我的公司视图中
<%= link_to "Follow", follow_firm_path(@firm), method: :post %>
然而,当我在浏览器中不断收到以下路由错误
时No route matches {:action=>"follow", :controller=>"firms"}
Rake Routes确认以下内容
follow_firm POST /firms/:id/follow(.:format) firms#follow
任何想法可能是什么问题?
非常感谢
修改:控制器代码
class FirmsController < ApplicationController
before_filter :authenticate_user!, :except => [:show, :index]
def index
@firm_names = Firm.all.map &:name
direction = params[:direction]
direction ||= "ASC"
@firms = Firm.order("name #{direction}")
respond_to do |format|
format.html # index.html.erb
format.js
end
end
def follow
@firm.users << current_user
end
我在索引视图中使用了部分跟踪操作。
答案 0 :(得分:0)
你应该定义这样的方法......
resources :firms do
collection
post :follow, on: :member
end
end
我认为如果这个方法没有创建任何东西,那么它的类型应该是。
试试吧
答案 1 :(得分:0)
一切看起来都不错,这应该是完美的。除了我在下一行中看到一个拼写错误
<%= link_to "Follow", follow_firm_path(@firm), method: :post %>
在:方法之后应该 =&gt; 而不是:。这将使链接成为获取请求而不是发布请求,这可能是问题,尝试使用简单链接并替换post将获取您的routes.rb只是为了测试问题是否由于此而产生。
您还可以从控制台测试路线方法
rails c
app.follow_firm_path(2)
我注意到你的路线也有错误,应该有一个=&gt;不是:在...之后:
resources :firms do
post :follow, :on => member
end