Это, вероятно, простая проблема. Я пытаюсь обновить пол пользовательского экземпляра с помощью выбора формы, но я сталкиваюсь с проблемами. Вот соответствующие модели:undefined method `id 'for" 2 ": String
user.rb
class User < ActiveRecord::Base
. . .
has_one :user_sex
has_one :sex, :through => :user_sex
accepts_nested_attributes_for :user_sex
end
sex.rb
class Sex < ActiveRecord::Base
enum options: [:"Not Known", :"Male", :"Female", :"Not Applicable"]
has_one :user_sex
has_one :user, :through => :user_sex
end
user_sex.rb
class UserSex < ActiveRecord::Base
belongs_to :user
belongs_to :sex
end
Это соответствующая часть моего шаблона:
edi t.html.erb
. . .
<div class="form-group">
<%= f.label :sex %><br />
<%= f.select :sex, Sex.options, :class => "form-control" %>
<%= showErrorMessages("Sex", :sex) %>
</div>
. . .
Вот HTML выход из моего выбора кода:
<select id="user_sex" name="user[sex]">
<option value="0">Not Known</option>
<option value="1">Male</option>
<option value="2">Female</option>
<option value="3">Not Applicable</option>
</select>
Когда я отправить форму, я получаю сообщение об ошибке, что читает «неопределенный метод` идентификатор»для„2“ : String ", а затем просмотреть больше сообщений об ошибках (см. Прикрепленное изображение). Кто-нибудь знает, как я могу это исправить?
Ваше решение имеет смысл. Думаешь, я могу переусердствовать? Я должен упомянуть, что я делаю секс своей таблицей, потому что другие сущности в моем приложении могут иметь секс. Мне представляется разумным хранить возможные значения для пола в базе данных. –
В этом случае я создаю беспокойство о том, что вы повторно используете для каждой из моделей, к которым вы хотите добавить секс. Я обновлю свой ответ. –
Я пока не понимаю, как получить доступ к перечислению, которое я определил в своей озабоченности из представления. Я тоже не видел примеров кода, описывающих это. Я бы подумал, что в моем случае это будет выглядеть как <% = User.sex%>, но это не работает. –