2013-02-12 2 views
0

Доброе утро,рельсы, создает объект

У меня есть два леса человека и города.

rails g scaffold person :name, city_id 
rails g scaffold city :cityname 

и один формульный вид/человек/

<div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :city_id %><br /> 
    <%= f.text_field :city_id %> 
    </div> 
    <div class="field"> 
    <%= f.label :cityname%><br /> 
    <%= f.text_field :cityname%> 
    </div> 

оно не идти, я должен создать объект города и поместить идентификатор в CITY_ID hidden_field и после этого после создания кнопки выбора всех должны быть сохранены в базе данных.

Не слишком сложно или? Кто бы вы это сделали?

ответ

2

Не нужно проходить city_id.

<%= form_tag url_for(:controller => :your_controller, :action => :some_action, :method => :get do %> 
    <div class="field"> 
     <%= label_tag :name %><br /> 
     <%= text_field_tag :name %> 
    </div> 
    <div class="field"> 
     <%= label_tag :cityname%><br /> 
     <%= text_field_tag :cityname%> 
    </div> 
    <% end %> 

В контроллере:

def some_action 
    city = City.find_or_create_by_cityname(params[:cityname]) 
    person = Person.new(params[:name]) 
    person.city_id = city.id 
    person.save! 
    end 
+0

спасибо, хороший трюк. Я получаю этот неопределенный метод 'CITYNAME» для # извлеченного источник (около линии № 66): 63: 64:

65: <%= f.label :cityname%> 66: <%= f.text_field :cityname%> 67:
68: 69: – ubuseral

+0

@ddd BCZ вы используете 'form_for'. Вы не можете использовать одну форму 'form_for' для двух моделей, у которых нет ассоциации. Поэтому используйте 'form_tag'. – codeit

+0

Отредактирован ответ с 'form_tag' .. – codeit

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