2014-02-10 3 views
0

Я пытаюсь связать несколько моделей рельсов в моем приложении. Я пытаюсь позволить пользователям создавать обзоры на продукте, используя форму. Я пытаюсь использовать принцип DRY DRY.Rails модели ссылок в форме DRY

Сначала я сделал стол биты с битой name, model year и image. Затем я создал таблицу производителей, в которой перечислены имена производителей летучих мышей. Мои летучие мыши модель belongs_to :manufacturer и моя модель производителя has_many :bats.

Вместо того, чтобы создавать несколько таблиц с использованием manufacturer, (указав название производителя как минимум 3 раза за каждую летучую мышь), как я могу связать две мои модели вместе?

Моя форма отправлена ​​к модели review. В форме у меня уже есть <%= f.collection_select :bat_id, Manufacturer.all, :id, :manufacturer, include_blank: true %>, в котором перечислены все возможные производители в выпадающем меню. HOWEVER, ничто не представлено в параметре :bat_id в форме просмотра при его отправке.

--Один догадка иметь manufacturer_id целое число, хранящуюся в модели летучей мыши как целое число в столбце manufacturer_id (Примечание: уже сделал это, но я не знаю, как представить, что в такой форме?)

--Another догадка иметь летучая мышь модель наследует от модели производителя

Любая помощь очень ценится

Моя полная форма:

<%= form_for(@review) do |f| %> 
    <%= render 'shared/error_messages', object: f.object %> 
    <div class="field" align= "center"> 
    <h3>Select bat</h3> 
    <%= f.collection_select :bat_id, Manufacturer.all, :id, :manufacturer, include_blank: true %> 
    <h3>What do you like about this bat?</h3> 
    <%= f.text_area :pros, placeholder: "Enter what you like..." %> 
    <h3>What do you not like about this bat?</h3> 
    <%= f.text_area :cons, placeholder: "Enter what you don't like..." %></br> 
    </div> 
    <div align="center"> 
    <%= f.submit "Add Review", class: "btn btn-large btn-info" %> 
    </div> 
<% end %> 

ответ

0

согласно документации http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select

в Params в collection_select должно быть:

f.collection_select (: пост,: author_id, Author.all,: идентификатор, : name_with_initial, подскажите : правда)

где пост является модель, author_id является атрибутом

или вы можете попробовать использовать:

= f.select (: bat_id, options_from_collection_for_select (@manufacturers, "идентификатор", "производитель", f.object. bat_id), {})

и поставить

@manufacturers = Manufacturer.all

внутри контроллера

+0

я не могу заставить его работать с ': review' , Он говорит «NoMethodError» + «неопределенный метод« merge »для: manufacturer: Symbol« – Daniel

+0

Привет, вы пробовали использовать «f.select» из моего примера? – rav

+0

Я только что попробовал и получил раскрывающийся список, но ничего не представил в таблице 'review' – Daniel

Смежные вопросы