2013-04-24 44 views
0

我正在研究高級搜索表單。我正在查看/搜索。現在,我爲用戶個人資料創建了屬性,例如郵政編碼,年齡,性別,職業,宗教信仰,教育程度等。我希望將這些字段用於高級搜索。表單域的未定義方法

當我包含f.label和文本字段時,我得到一個未定義的方法。我希望我不必爲搜索表單重新創建每個屬性,因爲考慮到我已經爲用戶配置文件完成了所有這些屬性,這沒什麼意義。任何幫助將不勝感激!

/searches/new.html(搜索):

<%= form_for @search do |f| %> 
    <div class="field"> 
     <%= f.label :keywords %><br/> 
     <%= f.text_field :keywords%> 
    </div> 
    <div class="field"> 
     <%= f.label :zip_code %><br/> 
     <%= f.text_field :zip_code %> 
    </div> 

    <div class="actions"><%= f.submit "Search" %></div> 
    <% end %> 

/users/new.html(用戶配置文件):

<%= form_for @user do |f| %> 
    <% if @user.errors.any? %> 
    <div class="error_messages"> 
     <h2>Form is invalid</h2> 
     <ul> 
     <% @user.errors.full_messages.each do |message| %> 
      <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
     <%= f.label :email %><br/> 
     <%= f.text_field :email %> 
    </div> 
    <div class="field"> 
     <%= f.label :password %><br/> 
     <%= f.password_field :password %> 
    </div> 
    <div class="field"> 
     <%= f.label :username %><br/> 
     <%= f.text_field :username %> 
    </div> 
    <div class="field"> 
     <%= f.label :zip_code %><br/> 
     <%= f.text_field :zip_code %> 
    </div> 
    </div> 
    <div class="field">I'm a 
      <%= f.select :gender, ['man', 'woman']%> 
      interested in 
      <%= f.select :gender, ['women', 'men', 'both']%> 
      </div> 
      <div class="field"> 
      Age <%= select(@object, :age, (18..75).to_a) %> to <%= select(@object, :age, (18..75).to_a) %> 
      </div> 
    <div class="actions"><%= f.submit %></div> 
<% end %> 
+0

這是他們兩個。 – pwz2000 2013-04-24 15:59:48

回答

1

@search對象是Search對象(或者不管它實際上是),而不是User

Rails不知道你的Search對象實際上並沒有這些字段,所以當它試圖檢索不存在的字段時,它就會炸燬。

有多種解決方法,包括給你的Search一個User屬性。

您也可以創建一個新的User並將其傳遞給部分爲f的用戶表單,這可能是我將採用的方法,但我不確切知道沒有嘗試它的樣子。

+0

搜索對象沒有這些字段。用戶對象是存儲了所有這些字段的對象,因爲我必須爲用戶配置文件創建這些字段。我的想法是,儘管這些是兩個不同的對象,我仍然可以從User對象中拖出字段以用於搜索對象。爲什麼要創建重複字段在一天結束時,搜索引擎嚴格用於搜索網站以查找特定類型的配置文件。因此,如果我必須爲搜索對象創建重複字段,它將取消搜索引擎從用戶配置文件中提取所需的信息。 – pwz2000 2013-04-24 16:11:08

+1

@ pwz2000我知道這不是,那就是我所說的。當你在'f'上調用東西時,它認爲你正在處理* form的*對象,因爲你是。我告訴過你兩種選擇,可能還有其他選擇。不知道你是如何錯過的。 – 2013-04-24 16:21:58