2016-02-05 60 views
2

我:如何以简单形式隐藏关联字段的一个选项?

price_plan.rb - 这种模式有布尔属性:隐藏

has_many :users 

user.rb

belongs_to :price_plan 

在用户编辑表单:

<%= f.association :price_plan, as: :radio_buttons, required: true, label: 'Select plan', hidden: ?????????? %> 

我该如何做到?我试过这种方式:hidden: lambda{ |price_plan| price_plan.hidden }它不起作用。

+0

这将有助于看到返回的错误,但是,和我完全猜,它涉及到引用price_plan而不是f.price_plan? –

+0

它没有任何错误 – nobilik

+0

如果该值为假,你真的希望它是一个隐藏的领域,或者你是否希望该领域甚至不成为该形式的一部分? –

回答

1

对不起,如果我不清楚我的问题。这是我所需要的:

price_plan.rb

scope :public_plan,-> { where(hidden: false) } 

形式:

<%= f.association :price_plan, :collection => PricePlan.public_plan, as: :radio_buttons, required: true %> 
0

尝试下面的代码。

<%= f.association :price_plan, as: :radio_buttons, required: true, label: 'Select plan', disabled: lambda{ |price_plan| price_plan.hidden? } %> 

对于隐藏你可以尝试下面的代码。希望它有效。

<% display_none = 'display:none' %> 
<% display_block = 'display:block' %> 
<%= f.association :price_plan, as: :radio_buttons, required: true, label: 'Select plan', style: "#{ lambda{ |price_plan| price_plan.hidden? } ? display_none : display_block }" %> 
+0

这将禁用选项,但我不需要禁用选项,我的目标是隐藏它们! – nobilik

+0

'未定义的局部变量或方法'display_none''与上次更新 – nobilik

+0

一个精明的用户仍然可以找到元素,然后改变它,但是正确吗?如果你使用隐藏字段,情况仍然如此? –

0

仍然不确定我是否明白确切的目标,但是这更接近您要找的内容吗?

<% if f.price_plan %> 
    <%= f.association :price_plan, as: :radio_buttons, required: true, label: 'Select plan' %> 
<% else %> 
    <% f.hidden_field :price_plan %> 
<% end %> 
相关问题