Rails 3.2.12 和 Ruby 1.9.3 和 Haml
我想使用属性计数来控制“link_to“删除””的显示,但我在设置逻辑时遇到了问题。
以下是我的表单中的一些代码,因为它是当前的:
.field
= codeline.label :name, "Units Alloc"
%br/
= codeline.text_field :units_alloc, :precision => 6, :scale => 2, :size => 10,
:class => "ui-state-default"
= codeline.hidden_field :_destroy
= link_to "remove", '#', class: "remove_fields"
这很好用,但我显示了“删除”链接,我希望它只显示是否有两个 :units_alloc 属性。
这是我尝试过的:
.field
= codeline.label :name, "Units Alloc"
%br/
= codeline.text_field :units_alloc, :precision => 6, :scale => 2, :size => 10,
:class => "ui-state-default"
- if :units_alloc.count > 1
= codeline.hidden_field :_destroy
= link_to "remove", '#', class: "remove_fields"
这是我的错误:
NoMethodError in Contracts#new
Showing /home/tom/rails_projects/tracking/app/views/contracts
/_codeline_fields.html.haml where line #9 raised:
undefined method `count' for :units_alloc:Symbol
如果我在参数中使用 units_alloc 而不是符号,我仍然会收到错误消息:
NameError in Contracts#new
Showing /home/tom/rails_projects/tracking/app/views/contracts
/_codeline_fields.html.haml where line #9 raised:
undefined local variable or method `units_alloc' for
#<#<Class:0xadbde90>:0xa8956e8>
我尝试使用'codeline.units_alloc',但这不起作用,并且标记了相同的错误。
有什么建议或指示可以帮助我解决此问题吗?
谢谢。
解决方案:感谢 James Scott Jr。
应用程序/控制器/contracts_controller.rb
def New
@show_remove = false
....
....
end
app/views/contracts/_codelines_fields.html.haml
.field
= codeline.label :name, "Units Alloc"
%br/
= codeline.text_field :units_alloc, :precision => 6, :scale => 2, :size => 10,
:class => "ui-state-default"
- if @show_remove
= codeline.hidden_field :_destroy
= link_to "remove", '#', class: "remove_fields"
- else
- @show_remove = true
就这样做了……删除按钮仅显示在第二行和随后的属性行中。