我正在努力在routes.rb中定义路由以使用嵌套资源,同时具有多态关联和具有不同命名空间的模型。
有两个控制器(我只显示重要的行):
/app/controllers/project/profile/likes_controller.rb
module Project
module Profile
class LikesController < Project::ApplicationController
def toggle
...
end
end
end
end
/app/controllers/project/place/profile/profiles_controller.rb
module Project
module Place
module Profile
class ProfilesController < Project::ApplicationController
...
end
end
end
end
...和两个模型,第一个具有多态关联,称为可爱:
/app/models/project/profile/like.rb
module Project
module Profile
class Like < ActiveRecord::Base
...
belongs_to :likeable, :polymorphic => true
...
end
end
end
......第二个模型是可爱的:
/app/models/project/place/base.rb
module Project
module Place
class Base < ActiveRecord::Base
has_many :likes, :as => :likeable, :class_name => "Project::Profile::Like", :dependent => :destroy
end
end
end
...这是我的路线定义:
的routes.rb
...
scope :module => "project" do
scope :module => "place" do
resources :places do
collection do
scope :module => "profile" do
resources :profiles do
resources :likes
end
end
end
end
end
scope :module => "profile" do
resources :likes do
collection do
post :toggle
end
end
end
end
...
我们可以看到,资源赞是资源地方的嵌套资源。
我想要达到什么目标?
我希望有一个嵌套资源地方/喜欢的路径,它应该指向:
{:action=>"toggle", :controller=>"project/profile/likes"}
并在这种情况下保留可爱的 place_id 的ID。
我尝试了以下内容:
<%= button_to t(:user_likes), ([likeable, likeable.likes.new]), :action => 'toggle', ... %>
但这导致以下路径:
project_place_profile_basis_project_profile_likes_path
这是不正确的。正确的路径是project_profile_likes_path
。
以下路线可用(佣金路线):
profile_likes POST
/places/profiles/:profile_id/likes(.:format)
{:action=>"index", :controller=>"porject/place/profile/likes"}
和
toggle_likes POST /likes/toggle(.:format)
{:action=>"toggle", :controller=>"project/profile/likes"}
有谁知道如何获得 controller =&gt;的路径project / profile / likes 和 action =&gt;肘节