2013-04-24 2 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

답변

1

귀하의 @search 객체가 Search 객체 (또는 무엇이든은 실제로)가 아니라 User입니다.

레일스는 Search 개체에 실제로 이러한 필드가 없으므로 존재하지 않는 필드를 검색하려고하면 개체가 폭파하게됩니다.

SearchUser 속성을 부여하는 것을 포함하여 여러 가지 방법이 있습니다.

User을 새로 만든 다음 부분 양식 인 f으로 전달할 수도 있습니다.이 방법은 시도하지 않고 어떻게 보이는지 정확하게 알지 못해도 받아 들일만한 방법 일 수 있습니다.

+0

검색 개체에 해당 필드가 없습니다. 사용자 개체는 사용자 프로필 용으로 만들어야하므로 모든 필드가 저장되어 있습니다. 내 생각에 이러한 두 개의 다른 개체가 있음에도 불구하고 사용자 개체의 필드를 끌어서 검색 개체에 사용할 수 있어야합니다. 중복 된 필드를 만드는 이유는 무엇입니까? 하루가 끝나면 검색 엔진은 특정 유형의 프로필을 찾기 위해 웹 사이트를 검색합니다. 따라서 검색 개체에 대해 중복 된 필드를 만들어야하는 경우 사용자 프로필에서 필요한 정보를 가져 오는 검색 엔진이 취소됩니다. – pwz2000

+1

@ pwz2000 그렇지 않다는 것을 안다. 그것이 내가 말한 것이다. 당신이'f'에서 물건을 호출 할 때, 당신이 있기 때문에 * 양식의 * 객체를 다루고 있다고 생각합니다. 나는 두 가지 옵션을 이야기했는데 다른 옵션이있을 수 있습니다. 당신이 그걸 어떻게 놓쳤는 지 아무 단서도. –

관련 문제