Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 向当前用户显示索引,仅显示其信息_Ruby On Rails_Ruby_Ruby On Rails 3_Activeadmin_Inherited Resources - Fatal编程技术网

Ruby on rails 向当前用户显示索引,仅显示其信息

Ruby on rails 向当前用户显示索引,仅显示其信息,ruby-on-rails,ruby,ruby-on-rails-3,activeadmin,inherited-resources,Ruby On Rails,Ruby,Ruby On Rails 3,Activeadmin,Inherited Resources,我有一个模型订单。在索引中,我希望当前的_用户只看到他们的订单的索引。订单属于:管理员用户。AdminUser有很多:订单。我正在我的应用程序中使用activeadmin,如果这有区别的话。我得到这个错误: Couldn't find Order without an ID 给出错误的行是我的订单控制器中的第二行。(编辑了不必要的信息) 这是@jamesw要求的我的订单型号 class Order < ActiveRecord::Base attr_accessible :color

我有一个模型订单。在索引中,我希望当前的_用户只看到他们的订单的索引。订单属于:管理员用户。AdminUser有很多:订单。我正在我的应用程序中使用activeadmin,如果这有区别的话。我得到这个错误:

Couldn't find Order without an ID
给出错误的行是我的订单控制器中的第二行。(编辑了不必要的信息)

这是@jamesw要求的我的订单型号

class Order < ActiveRecord::Base
  attr_accessible :color_back, :color_front, :color_sleeve, :end_date, :name, :start_date, :whiteboard, :customer_id, :order_category_id, :order_type_id, :order_status_id, :order_priority_id, :print_location_id, :artwork, :proof, :line_items_attributes, :assignee_id, :admin_user_id

  mount_uploader :artwork, ArtworkUploader
  mount_uploader :proof, ProofUploader


  has_many :line_items
  belongs_to :assignee, :class_name => "AdminUser"
  belongs_to :customer
  belongs_to :order_category
  belongs_to :order_type
  belongs_to :order_status
  belongs_to :order_priority
  belongs_to :print_location
  belongs_to :admin_user
  accepts_nested_attributes_for :line_items, :allow_destroy => true

  scope :owned_by, lambda { |user| includes(:assignee).where("admin_users.id = ?", user.id) }



  def default_values
    if new_record?
      self.start_date ||= Date.today
      self.number ||= (Order.maximum(:number) + 1 rescue 1)
    end
  end
end
类顺序“AdminUser”
属于:客户
属于:订单类别
属于:订单类型
属于:订单状态
属于:优先顺序
属于:打印位置
属于:管理员用户
接受以下内容的\u嵌套\u属性\u:line\u项,:allow\u destroy=>true
范围:拥有者,lambda{|用户|包括(:受让人)。其中(“admin|u users.id=?”,user.id)}
def默认值
如果有新的记录?
self.start|u date |=date.today
self.number | |=(最大顺序(:number)+1)
结束
结束
结束

看起来您正试图通过
order\u id
筛选Orders表。除非以非标准方式构建数据库,否则orders表的ID字段通常是
ID
(而不是
order\u ID

撇开这个问题不谈,我怀疑您是否希望为索引操作传递订单id,因为这只会返回一条记录,而且从本质上讲,索引操作应该列出许多记录(在您的情况下,是当前用户的所有记录)


如果这两个问题都不能解决您的问题,请尝试对行1乘1进行注释。

尝试添加此控制器方法

ActiveAdmin.register Order do
  controller do
    def scoped_collection
     Order.where(:admin_user => current_admin_user.id)
    end
  end
end
请参阅此处的更多信息:

我通过将有问题的行取出并使用
scope\u to:current\u user
解决了这个问题。但是我想知道,如何添加一个条件语句来仍然允许管理员查看这个?现在看一下控制器

scope_to current_user

index do 
     column "ID" do |order|
      link_to order.id, admin_order_path(order)
     end
    column "Proof" do |order|
     image_tag order.proof_url(:proof).to_s
        end
        column "Name" do |order|
      link_to order.name, admin_order_path(order)
    end
    column(:customer, :sortable => :customer_id)
        column "Category", :order_category
        column "Status", :order_status
        column "Priority", :order_priority 
    column "Due Date", :end_date
    default_actions
  end

这种做法似乎完全错误。您似乎试图获得一个订单,但您声明您想要当前管理员用户的所有订单,那么为什么不直接获得登录管理员的所有订单?”@orders=当前的_admin.orders'这样做不会给我一个错误,但没有任何改变。不同的用户仍然可以看到其他用户的订单使用我给您的代码,不可能看到所有用户的订单,这意味着有一些代码正在运行,您没有向我们展示。请提供控制器索引操作和index.html.erb模板,以及索引操作的日志文件项,并运行rails控制台会话,查找第一个订单
o=order。首先
然后检查该订单是否存在管理员用户
o.admin\u用户。检查
或管理员用户模型关系的名称。你能把你订的型号也寄出去吗code@jamesw这是索引的所有代码,继承的资源正在从这里创建视图,因此没有indext.html.erb。我怀疑这里真正的问题是,我的订单数据库没有为每个订单显示管理员用户id,所以我先回去看看。
scope_to current_user

index do 
     column "ID" do |order|
      link_to order.id, admin_order_path(order)
     end
    column "Proof" do |order|
     image_tag order.proof_url(:proof).to_s
        end
        column "Name" do |order|
      link_to order.name, admin_order_path(order)
    end
    column(:customer, :sortable => :customer_id)
        column "Category", :order_category
        column "Status", :order_status
        column "Priority", :order_priority 
    column "Due Date", :end_date
    default_actions
  end