在我的控制器中我有:
def index
@grid = UsersGrid.new(params[:users_grid]) do |scope|
scope.where(admin: false).page(params[:page]).per_page(30)
end
@grid.assets
if (current_user && current_users.admin?)
@show_column = true
else
@show_column = false
end
end
在我的网格课程中:
class UsersGrid
include Datagrid
scope do
User.order("users.created_at desc")
end
column(:abc, :header => "abc?", :html => true, :if => proc {@show_column == true}) do |user|
image_tag("abc.png", title: "abc") if user.abc
end
end
所以在控制器中我设置了@show_column
,并且在类中它应该显示列:abc
,具体取决于@show_column
是真还是假。这是错误的,因为@show_column
是一个实例变量,在网格类中不可用。所以它没有。我应该如何更改此功能?
答案 0 :(得分:0)
您可以在创建UsersGrid
实例时传递变量,然后将其保存在实例变量中。
在控制器中:
def index
@show_column = (current_user && current_users.admin?)
@grid = UsersGrid.new(params[:users_grid], @show_column) do |scope|
scope.where(admin: false).page(params[:page]).per_page(30)
end
@grid.assets
end
在网格类中:
class UsersGrid
def initialize(*params, show_column)
super *params
@show_column = show_column
end
# ...
end
答案 1 :(得分:0)
您可以将 attr_accessor 用于不属于表格列的变量。
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<HWData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Header xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" version="1.0"/>
<NE MOID="WBTS-4073" NEType="WBTS">
<EQHO MOID="EQHO-1-0" serialNumber="V7124400225">
<UNIT MOID="UNIT-FAN-2" State="enabled" serialNumber="V734"></UNIT>
<UNIT MOID="UNIT-FAN-1" State="disabled" serialNumber="V735"></UNIT>
<UNIT MOID="UNIT-FAN-3" State="enabled" serialNumber="V745"></UNIT>
</EQHO>
</NE>
</HWData>