Получение полей_Дор для работы с отношениями HAS_MANY
-
13-11-2019 - |
Вопрос
У меня проблемы с созданием вложенной формы модели.
Вот мои модели:
class Workout < ActiveRecord::Base
has_many :scores
has_many :users, :through => :scores
accepts_nested_attributes_for :scores
end
class Score < ActiveRecord::Base
belongs_to :user
belongs_to :workout
end
class User < ActiveRecord::Base
has_many :scores
has_many :workout, :through => :scores
end
.
В контроллере тренировок вот что у меня есть для нового действия:
def new
@workout = Workout.new
3.times { @workout.scores.build }
respond_to do |format|
format.html # new.html.erb
format.json { render json: @wod }
end
end
.
Однако в форме, когда я пробую полей_вы, я ничего не получаю:
<% f.fields_for :scores do |builder| %>
<p>
<%= builder.label :score %><br />
<%= builder.text_field :score %>
</p>
<% end %>
.
Что я делаю не так?
Решение
Оказывается в Rails 3, мне нужно использовать <%= fields_for ...%> вместо <% fields_for ...%>.
Другие советы
Попробуйте добавить следующее в свою модель Workout
:
attr_accessible :scores_attributes
accepts_nested_attributes_for :scores
.
Если вы хотите убедиться, что счет не создается, если это не так, и это может быть уничтожено через отношения, которые вы можете расширить, чтобы:
attr_accessible :scores_attributes
accepts_nested_attributes_for :scores, reject_if: proc { |a| a[:field].blank? }, allow_destroy: true
validates_associated :scores
.
Просто переключайте :field
с соответствующим полем, которое требуется для создания оценки.
Не связан с StackOverflow