0

我正在开发一个高级搜索表单。我在视图/搜索中工作。现在我已经为我一直使用的用户个人资料创建了属性,例如邮政编码、年龄、性别、职业、宗教、教育等。我想将这些字段用于我的高级搜索。

当我包含 f.label 和 text 字段时,我得到一个未定义的方法。我希望我不必为搜索表单重新创建每个属性,因为考虑到我已经为用户配置文件完成了所有这些属性,这没有多大意义。任何帮助将不胜感激!

/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 %>
4

1 回答 1

1

您的@search对象是一个Search对象(或实际上是什么),而不是User.

Rails 不知道您的Search对象实际上没有这些字段,因此当它尝试检索不存在的字段时,它会爆炸。

有很多方法可以解决这个问题,包括给你Search一个User财产。

您也可以创建一个新的User并将其传递给用户表单 partial as f,这可能是我会采用的方法,尽管我不知道如果不尝试它会是什么样子。

于 2013-04-24T15:58:49.757 回答