我正在开发一个高级搜索表单。我正在观看/搜索。现在我为我一直在使用的用户个人资料创建了属性,例如邮政编码,年龄,性别,职业,宗教,教育等。我想将这些字段用于我的高级搜索。
当我包含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 :(得分:1)
您的@search
对象是Search
对象(或实际上的任何对象),而不是User
。
Rails不知道你的Search
对象实际上没有那些字段,所以当它试图检索不存在的字段时,它会爆炸。
有很多方法可以解决这个问题,包括为Search
User
属性提供。
你也可以创建一个新的User
并将其传递给用户表单部分为f
,这可能就是我要采取的方法,虽然我不知道它的确是什么样子没有尝试一下。