2013-02-12 64 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> 

它不走,我要創建城市的目標,並把ID在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

感謝,很不錯的技巧。我得到這個未定義的方法'城市名」的#<人:0x38ad3b0> 提取的源(圍繞線#66): 63: 64:

65: <%= f.label :cityname%> 66: <%= f.text_field :cityname%> 67:
68: 69: – ubuseral 2013-02-12 12:39:53

+0

@ddd BCZ您使用'form_for'。你不能爲兩個沒有關聯的模型使用單一的'form_for'。所以使用'form_tag'。 – codeit 2013-02-12 15:14:27

+0

用'form_tag'編輯答案.. – codeit 2013-02-12 15:19:56