我正在尝试在我的某个控制器上编写自定义操作的请求规范。
我的routes.rb是这样的:
controller :profile, :path => 'profile' do
match 'view_friends/:circle_id', :to => :view_friends, :via => [:get], :as => 'view_friends'
end
resources :profile
我想访问此操作,并希望我可以使用
visit profile_path
visit new_profile_path
etc
我可以做到
visit view_friends_profile_path
然而,这给了我“错误未定义的局部变量或方法”
我可以通过编写
来获得所需的行为visit profile_path.to_s + '/view_friends/' + circle.id.to_s
但这太可怕了。我错过了能够命名自定义操作的内容吗?
编辑:
佣金路线的相关输出
view_friends GET (/:locale)/profile/view_friends/:circle_id(.:format) {:controller=>"profile", :action=>"view_friends"}
答案 0 :(得分:1)
首先我有点困惑。通常在制作控制器时使用轨道,控制器具有复数名称。例如,如果您的模型名称为Profile
,那么您将拥有ProfilesController
。您编写问题的方式意味着您的控制器名为ProfileController
。看起来有点不寻常,所以如果你能澄清一下会有所帮助。话虽这么说,试试这个:
# in routes.rb
resources :profile do
member do
match 'view_friends/:circle_id' => :view_friends, :via => :get, :as => 'view_friends'
end
end
应该产生你想要的东西。您现在可以通过以下方式访问它:
view_friends_profile_path(profile_id, circle_id)