【问题标题】:Nested Resource with Devise - Rails3使用设计的嵌套资源 - Rails3
【发布时间】:2011-04-26 03:47:49
【问题描述】:

我正在尝试设置配置文件控制器以与设计注册成员一起使用。

我创建了Profile 模型和控制器,并通过将belongs_to :member 添加到我的profile.rb 模型和has_one :profile 在我的member.rb 中添加了one-to-one relationship 模型。

创建我使用的嵌套资源:

devise_for :members, :path => "accounts",:path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" }

resources :members do
  resources :profiles
end

调用rake routes 输出

     member_profiles GET    /members/:member_id/profiles(.:format)          {:action=>"index", :controller=>"profiles"}
                     POST   /members/:member_id/profiles(.:format)          {:action=>"create", :controller=>"profiles"}
  new_member_profile GET    /members/:member_id/profiles/new(.:format)      {:action=>"new", :controller=>"profiles"}
 edit_member_profile GET    /members/:member_id/profiles/:id/edit(.:format) {:action=>"edit", :controller=>"profiles"}
      member_profile GET    /members/:member_id/profiles/:id(.:format)      {:action=>"show", :controller=>"profiles"}
                     PUT    /members/:member_id/profiles/:id(.:format)      {:action=>"update", :controller=>"profiles"}
                     DELETE /members/:member_id/profiles/:id(.:format)      {:action=>"destroy", :controller=>"profiles"}

在浏览器中转到localhost:3000/members/1/profiles 会正确地将我路由到profiles#index 页面,但是当我尝试调用member_profiles_path 时它会失败并出现以下错误:

No route matches {:controller=>"profiles"}

谁能看到我在哪里出错了?我正在使用 Rails 3.0.3。

【问题讨论】:

    标签: ruby-on-rails devise


    【解决方案1】:

    由于这是一个 has_one 关联,您是否尝试过使用资源而不是资源?

    resources :members do
      resource :profile
    end
    

    然后您应该能够执行以下操作:

    link_to "Profile", member_profile_path(@member)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-25
      • 2015-02-27
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      相关资源
      最近更新 更多