Rails 3: Как принять естественный ключ дочерней модели в форме родительской модели - PullRequest
0 голосов
/ 14 января 2011

У меня есть следующий код:

# app/models/part.rb
class Part < ActiveRecord::Base
  has_many :lots
  # attributes: id, number
end

#app/models/lot.rb
class Lot < ActiveRecord::Base
  belongs_to :part
  # attributes: id, number, part_id, quantity
end

# app/views/lots/_form.html.erb
...
<p>
  <%= f.label :number %><br />
  <%= f.text_field :number %>
</p>
<p>
  <% f.fields_for :part do |p| %>
    <%= p.label :number, 'Part' %><br />
    <%= p.text_field :number %>
  <% end %>
</p>
<p>
  <%= f.label :quantity %><br />
  <%= f.text_field :quantity %>
</p>
...

Форма предназначена для редактирования или создания лотов. Форма предназначена для принятия номера детали существующей детали и сохранения part_id в партии. Группа fields_for не рендеринг для меня. Я уверен, что это легко. Здесь происходит то, что номер детали является естественным ключом, но Rails использует суррогатные ключи. Я мог бы использовать список выбора, но мне нужно принять ввод с клавиатуры. Мне нужно будет подключить AJAX для формы в конце концов. Что ты думаешь?

1 Ответ

0 голосов
/ 14 января 2011

Вы пропускаете знак равенства

<%= f.fields_for :part do |p| %>

В Rails 3 помощники обычно возвращают значения, а не выводят их напрямую. Из-за этого используйте <% = вместо <% </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...