Ruby on Rails: Как добавить текстовое поле формы, если соответствующее поле в модели не существует? - PullRequest
3 голосов
/ 14 декабря 2010

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

Product: name, shop_id (foreign key)
Shop:    name

Ассоциации:

Product: belongs_to :shop
Shop:    has_many   :products

В форме, которая создает новый Product У меня есть:

<%= f.label(:shop, "Shop:") %>
<%= f.select(...) %>

Это поле выбора со всеми существующими магазинами. Последняя опция в этом поле выбора - Create New Shop. Когда пользователь нажимает эту опцию, Javascript показывает дополнительное поле:

<div id="new_shop_wrapper">
    <label for="new_shop">New shop:</label>
    <input id="new_shop" name="new_shop" type="text" />
</div>

(Этот div по умолчанию скрыт с display: none.)

Как мне добавить это div при создании формы Rails?

Я пытался:

<%= f.label(:new_shop, "New Shop:") %>
<%= f.text_field(:new_shop) %>  

но это не работает, потому что new_shop не является полем Product.

Я думал использовать:

<%= text_field(<object>, :new_shop) %>  

но я не знаю, что использовать.

Пожалуйста, сообщите.

Ответы [ 2 ]

4 голосов
/ 14 декабря 2010

Попробуйте

<%= text_field_tag("new_shop") %>  
2 голосов
/ 14 декабря 2010

На самом деле, вы можете добавить свой метод в модель:

class Product < ActiveRecord::Base
  def new_show=(val)
    self.shop = Shop.new({:name => val})
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...