2

我一直在将 simple_form 与 HAML 一起用于 Rails

我有许多 line_items 他们有一个我从 Order 对象中检索到的唯一 ID

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

但是,每当我遍历这些列表时,我想隐藏(从表单中删除)line_items id,我尝试放置一个除非语句来删除其他参数并且它可以工作(例如:cost)但是对于 :id 它似乎是一个隐藏字段

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

我怎样才能成功地从字段中删除 ID,就像我为 :cost 所做的那样?

4

3 回答 3

5

试试这个:

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

有关此的更多信息:http: //apidock.com/rails/ActionView/Helpers/FormHelper/form_for

于 2012-12-04T16:30:50.697 回答
0

Rails 认为您永远不需要编辑 :id,因此它变得困难或不可能。如果您想显示 :id,那很好,但显示 :id 以便可以编辑的理由有限。

我总是在表单中显示 id。

于 2012-11-05T17:47:22.657 回答
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" />-->
于 2012-11-06T03:15:11.447 回答