我有一個模型availability,其中包含days.
每個day都有一個name.
availability接受嵌套屬性days:
class AvailabilitiesController < ApplicationController
before_action :require_login
def new
@availability = current_user.create_availability
Date::DAYNAMES.each do |day_name|
@availability.days << Day.new(name: day_name)
end
end
end
此表單在文本輸入中顯示每一天的名稱:
<%= form_with model: @availability, local: true, url: { action: "create" } do |form| %>
<%= form.fields_for :days, @day do |day_form| %>
<%= day_form.text_field :name %>
<% end %>
<%= form.button :submit %>
<% end %>
我不需要文本欄位,我只想顯示日期名稱。就像是:
<%= form_with model: @availability, local: true, url: { action: "create" } do |form| %>
<%= form.fields_for :days, @day do |day_form| %>
<h2><%= @day.name %></h2>
<% end %>
<%= form.button :submit %>
<% end %>
上面的例子不起作用,因為 的值為@daynil。我如何訪問每一天的名稱?
uj5u.com熱心網友回復:
您不需要將第二個引數傳遞給fields_for:
<%= form_with model: @availability, local: true, url: { action: "create" } do |form| %>
<%= form.fields_for :days do |day_form| %>
<h2><%= day_form.object.name %></h2>
<% end %>
<%= form.button :submit %>
<% end %>
這將呼叫days由表單構建器 (@availability) 包裝的物件上的方法。僅當您想覆寫此行為時才需要傳遞第二個引數。
不過,根據您想要的輸入,您甚至可能不需要首先使用 fields_for。如果您只想讓用戶選擇星期幾,您可以使用collect 助手。只有當您想為嵌套記錄創建單獨的輸入(例如每天的小時數)時,欄位才真正相關。
uj5u.com熱心網友回復:
假設您要顯示所有days屬于 given @availability。
該object方法回傳由表單構建器包裝的物件。
在你的代碼中
form.object #=> will return the availability object.
day_form.object #=> will return the day object.
獲得物件后,您就可以訪問模型方法和屬性。
嘗試這個。
<%= form_with model: @availability, local: true, url: { action: "create" } do |form| %>
<%= form.fields_for :days do |day_form| %>
<h2><%= day_form.object.name %></h2>
<% end %>
<%= form.button :submit %>
<% end %>
希望這對你有用!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/366141.html
標籤:红宝石轨道
