簡體   English   中英

Rails嵌套表單:將索引作為值分配給DB

[英]Rails nested forms: assign index as value to DB

我正在為酒店建立預訂系統,並創建了一個價格模型,該價格模型被房間模型接受為嵌套屬性。 到目前為止,一切都很好。 但是,由於我希望有機會保持價格上漲,因此我需要價格模型中的響應時間。 所以基本上,價格:50、80、120以及天數:1、2、3 ...好,所以現在我的問題是:我如何實現將天數自動保存在價格表中,以便用戶只需要輸入特定日期的價格。

我試圖使它與提交到days列的隱藏字段一起工作,但是我無法修復它。 由於控制器生成了20個增量,因此我嘗試了使用fields_for助手生成的索引。

這是我控制器的相關部分

def new
    @room = current_user.rooms.build
    20.times do 
     increment = @room.increments.build
    end
end

這是我的看法

<%= form_for @room do |f| %>
  #...
  <%= f.fields_for :increments do |ff| %>

      <%= ff.text_field :price, placeholder: 'price' %>
      <%= ff.hidden_field :days, value: 'index'  %>

您是否有任何想法,相對於生成20個價格字段的控制器,我如何才能使hidden_​​field的值等於1 ... 20? 我是否需要編寫一個表單助手,如果可以,我如何才能增加天數? 我的方法完全錯誤嗎,並且有一種更明顯的方法來實現相同的功能? 任何幫助,高度贊賞!

我不完全確定這是您要的內容,但是可以使用以下方法:

def new
    @room = current_user.rooms.build
    (1..20).each do |i|
      @center.increments.build(days: i)
    end
end

或將建築物放在一行中:

(1..20).each { |i| @center.increments.build(days: i) }

(在循環中沒有在任何地方使用分配increment ,它會更新為循環中每個元素的最后一個新增量;因此,我將其刪除了。)

編輯:@oscar說了什么...

您是否總是想產生20倍的增量?

好吧,這行20.times do是一個循環。 我該怎么辦?

20.times do |t|
 increment = @center.increments.build(days: t+1) # t+1 since t starts in 0
end

通過這種方式,您可以在實例構建時設置日期

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM