Rails simple_fields_for无法隐藏:id

时间:2012-11-05 17:38:49

标签: ruby-on-rails ruby simple-form

我一直在使用simple_form和HAML一起使用rails

我有一些line_items他们有一个唯一的ID,我从Order对象

中检索
    = f.simple_fields_for :line_items do |line_items|
     .f.input :id unless @order.status?
     .f.input :cost unless @order.status?

但是,每当我遍历这些列表时,我想隐藏(从表单中删除)line_items id,我尝试使用除非语句删除其他参数并且它有效(例如:成本)但是对于:id它似乎是一个隐藏的字段

     <input id="order_line_items_attributes_2_id" name="order[line_items_attributes][2][id]" type="hidden" value="26">

如何成功删除ID,使其不会出现在字段中,就像我为此做的那样:cost?

3 个答案:

答案 0 :(得分:5)

试试这个:

= f.simple_fields_for :line_items, include_id: false do |line_items|

更多内容:http://apidock.com/rails/ActionView/Helpers/FormHelper/form_for

答案 1 :(得分:0)

Rails认为你永远不需要编辑:id,因此很难或不可能。如果你想显示:id,那很好,但是提供:id这样可以编辑它的理由有限。

我只是一直在表单中显示id。

答案 2 :(得分:0)

解决方法......

我欺骗了系统,通过渲染字段,因为我使用HTML注释来阻止它出现并阻止它被提交

/ =f.input :id unless @order.status?

我使用=而不是 - 因为字段可以渲染但是隐藏在html注释中

<!--<input class="hidden" id="order_line_items_attributes_2_product_id" name="order[line_items_attributes][2][product_id]" type="hidden" />-->