当我只想更新关联时,ActiveScaffold更新显示关联的记录字段

时间:2012-07-05 00:42:39

标签: ruby-on-rails activescaffold

在我的应用程序的管理界面中,我使用ActiveScaffold进行简单的记录编辑:

class Admin::InspectionsController < ApplicationController
  require_role :staff
  protect_from_forgery :only => [:create, :update, :destroy]

  active_scaffold :inspections do |config|
    [:create, :delete].each {|a| config.actions.exclude a}
    config.actions.exclude :nested

    config.update.columns = [ :name, :activity_status, :inspector, :report, :note, :time_window, :inspection_type ]
  end
end

在这种情况下,:activity_status:inspector是关联列,指的是关联对象。在我的脚手架中,我希望编辑器能够更改外键指向的对象,但上面的配置显示:

Current Staging view

我只希望更新检查员本身,而不是其字段!

将列更改为:inspector_id只允许直接编辑ID本身。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我使用的解决方法是从相关控制器上的子窗体操作中删除所有列:

class Admin::UsersController < ApplicationController
  active_scaffold :users do |config|
    #...
    config.subform.columns = []
    #...
  end
end

我不知道是否有更好,更优雅的方式......

对检查控制器中的列使用form_ui方法:

[:activity_status, :inspector].each do |c|
  config.columns[c].form_ui = :select
end