ruby-on-rails - 嵌套资源的问题

Nih*_*hil 1 ruby-on-rails nested-routes

我有嵌套资源的问题.

2型号

User => has_many :stuffs

Stuff => belongs_to :user
Run Code Online (Sandbox Code Playgroud)

的routes.rb

map.resources :stuffs

map.resources :users, :has_many => [:stuffs]
Run Code Online (Sandbox Code Playgroud)

当我调用/ users/1/stuffs时,它会向我显示相应用户的Stuff.但是当我打电话给/ users/2/stuffs时我也得到了这个.它应该返回0"Stuffs"但它不起作用.

MySQL Query from Server
SELECT * FROM `stuffs`
Run Code Online (Sandbox Code Playgroud)

耙路线

stuffs GET    /stuffs(.:format)                         {:action=>"index", :controller=>"stuffs"}
                POST   /stuffs(.:format)                         {:action=>"create", :controller=>"stuffs"}
      new_stuff GET    /stuffs/new(.:format)                     {:action=>"new", :controller=>"stuffs"}
     edit_stuff GET    /stuffs/:id/edit(.:format)                {:action=>"edit", :controller=>"stuffs"}
          stuff GET    /stuffs/:id(.:format)                     {:action=>"show", :controller=>"stuffs"}
                PUT    /stuffs/:id(.:format)                     {:action=>"update", :controller=>"stuffs"}
                DELETE /stuffs/:id(.:format)                     {:action=>"destroy", :controller=>"stuffs"}
    user_stuffs GET    /users/:user_id/stuffs(.:format)          {:action=>"index", :controller=>"stuffs"}
                POST   /users/:user_id/stuffs(.:format)          {:action=>"create", :controller=>"stuffs"}
 new_user_stuff GET    /users/:user_id/stuffs/new(.:format)      {:action=>"new", :controller=>"stuffs"}
edit_user_stuff GET    /users/:user_id/stuffs/:id/edit(.:format) {:action=>"edit", :controller=>"stuffs"}
     user_stuff GET    /users/:user_id/stuffs/:id(.:format)      {:action=>"show", :controller=>"stuffs"}
                PUT    /users/:user_id/stuffs/:id(.:format)      {:action=>"update", :controller=>"stuffs"}
                DELETE /users/:user_id/stuffs/:id(.:format)      {:action=>"destroy", :controller=>"stuffs"}
          users GET    /users(.:format)                          {:action=>"index", :controller=>"users"}
                POST   /users(.:format)                          {:action=>"create", :controller=>"users"}
       new_user GET    /users/new(.:format)                      {:action=>"new", :controller=>"users"}
      edit_user GET    /users/:id/edit(.:format)                 {:action=>"edit", :controller=>"users"}
           user GET    /users/:id(.:format)                      {:action=>"show", :controller=>"users"}
                PUT    /users/:id(.:format)                      {:action=>"update", :controller=>"users"}
                DELETE /users/:id(.:format)                      {:action=>"destroy", :controller=>"users"}
           root        /                                         {:action=>"index", :controller=>"users"}
Run Code Online (Sandbox Code Playgroud)

宝石清单

actionmailer (2.3.8)
actionpack (2.3.8)
activerecord (2.3.8)
activeresource (2.3.8)
activesupport (2.3.8)
arel (2.0.6)
authlogic (2.1.6)
builder (2.1.2)
cgi_multipart_eof_fix (2.5.0)
gem_plugin (0.2.3)
i18n (0.5.0)
mongrel (1.1.5 x86-mingw32)
mysql (2.8.1 x86-mingw32)
paperclip (2.3.7)
rack (1.1.0)
rails (2.3.8)
rake (0.8.7)
tzinfo (0.3.23)
Run Code Online (Sandbox Code Playgroud)

对应的user_id没有where子句.但是如何解决呢?

Rails版本2.3.8

应该像这样工作=> http://guides.rubyonrails.org/routing.html 2.7嵌套资源

希望有人可以提供帮助

小智 5

在你的Stuffs控制器的索引方法中,你是如何收集你的东西的?如果你使用脚手架来创建控制器,它将默认为类似的东西

@stuffs = Stuff.all
Run Code Online (Sandbox Code Playgroud)

但应该是符合的

@user = User.find(params[:user_id])
@stuffs = @user.stuffs
Run Code Online (Sandbox Code Playgroud)

或类似的东西 - 基本上,你收集用户的东西,而不是所有的东西.