Ruby on rails 在rails\u admin中使用orderable来处理rails 4中的has\u many:through关系

Ruby on rails 在rails\u admin中使用orderable来处理rails 4中的has\u many:through关系,ruby-on-rails,ruby-on-rails-4,nested-forms,has-many-through,rails-admin,Ruby On Rails,Ruby On Rails 4,Nested Forms,Has Many Through,Rails Admin,我正在尝试找出如何使用位置排序,如中的示例所示,但不使用受保护的属性,而是使用Rails 4的强参数。如果我尝试使用页面上给出的block\u id=函数,而不使用attr\u accessible:block\u id,我会得到一个ActiveRecord::UnknownAttributeError错误消息未知属性:block\u id。显然,如果我使用attr\u accessible:block\u id,它会要求我向Gemfile添加受保护的属性,这不是Rails 4的方式 是否有人能

我正在尝试找出如何使用位置排序,如中的示例所示,但不使用受保护的属性,而是使用Rails 4的强参数。如果我尝试使用页面上给出的
block\u id=
函数,而不使用
attr\u accessible:block\u id
,我会得到一个
ActiveRecord::UnknownAttributeError
错误消息
未知属性:block\u id
。显然,如果我使用
attr\u accessible:block\u id
,它会要求我向Gemfile添加受保护的属性,这不是Rails 4的方式


是否有人能够使用强参数在rails\u admin for rails 4中使orderable position工作?

省略
attr\u accessible:block\u id
并应用底部的替代解决方案对我有效

PS:Rails 4.2.0和Rails_admin 0.6.6

class Grid < ActiveRecord::Base
  has_many :block_grid_associations, :dependent => :delete_all, :autosave => true, :include => :block
  has_many :blocks, :through => :block_grid_associations

  def block_ids=(ids)
    unless (ids = ids.map(&:to_i).select { |i| i>0 }) == (current_ids = block_grid_associations.map(&:block_id))
      (current_ids - ids).each { |id| block_grid_associations.select{|b|b.block_id == id}.first.mark_for_destruction }
      ids.each_with_index do |id, index|
        if current_ids.include? (id)
          block_grid_associations.select { |b| b.block_id == id }.first.position = (index+1)
        else
          block_grid_associations.build({:block_id => id, :position => (index+1)})
        end
      end
    end
  end

  rails_admin do
    configure :block_grid_associations do
      visible(false)
    end

    configure :blocks do
      orderable(true) # only for multiselect widget currently. Will add the possibility to order blocks
      # configuration here
    end
  end
end
classgrid:delete\u all,:autosave=>true,:include=>:block
有多个:块,:到=>:块\u网格\u关联
def块_ID=(ID)
除非(ids=ids.map(&:to|i)。选择{i|i>0})=(当前|id=block|grid_associations.map(&:block|id))
(当前的| id-id)。每个{id |块|网格|关联。选择{b | b.block | id==id}.first.mark|u for_destruction}
id.each_与_索引do | id,索引|
如果当前_id.include?(id)
block|grid_associations.select{| b | b.block|u id==id}.first.position=(索引+1)
其他的
block\u grid\u associations.build({:block\u id=>id,:position=>(index+1)})
结束
结束
结束
结束
rails_admin do
配置:块\网格\关联是否执行
可见(假)
结束
配置:块做什么
可订购(true)#当前仅适用于multiselect小部件。将增加订购区块的可能性
#这里的配置
结束
结束
结束