ruby-on-rails - 路由 : Combining resources and nested resources

标签 ruby-on-rails ruby-on-rails-3

/items 应该列出所有项目
/user/items 应该只列出当前用户的项目

我已经定义了用户和项目之间的关系,所以 current_user.items 工作正常。

我的问题是:
items#index 操作如何知道它是被直接调用还是通过用户资源调用,以便知道用什么填充 @items

# routes.rb
resources :items
resource :user do
  resources :items
end

# items_controller.rb
class ItemsController < ApplicationController
  def index
    @items = Item.all
  end
end

# users_controller.rb
class UsersController < ApplicationController
  def show
    @user = current_user
  end
end

最佳答案

它看起来很老套,但这是我的第一个想法:)

resource :user do
  resources :items, :i_am_nested_resource => true
end

class ItemsController < ApplicationController
  def index
    if params[:i_am_nested_resource]
      @items = current_user.items
    else
      @items = Item.all
    end
  end
end

或者您可以采用蛮力的方式:解析您的请求 url :)。

关于ruby-on-rails - 路由 : Combining resources and nested resources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5663096/

相关文章:

ruby-on-rails - Ruby 跟踪 self

ruby-on-rails - 使用 "rails generate"命令选择 Rails 环境

ruby-on-rails - 我无法使用 FactoryGirl.create 创建对象,验证失败用户已被占用

ruby-on-rails - 数据库/模型夹具和原始状态

ruby-on-rails-3 - 使用延迟作业发送电子邮件时报告错误

ruby-on-rails - Rails CanCan 条件哈希不起作用

jquery - Rails 3 - 渲染部分 js.erb

ruby-on-rails - 使用带有 block 的 mail_to (mail_to ... do)

ruby-on-rails - rails : Uninstall specific version of a library using gem

Rails 形式的 Javascript slider