让特定列中的所有用户都在ruby中获取值

时间:2014-03-11 10:30:46

标签: ruby-on-rails

以下是“用户”模型的架构

id | First_Name | Zip
1  | abc        | 10005
2  | xyz        | 10005
3  | mno        | 10005
4  | ijk        | 10006

我有一个text_field,我输入邮政编码,如下:

<%= form_for :search, :url => { :action => :search} do |f| %>
<table>
      <tr>
         <td align="center">
            <h2 style="color:Black; font-size: x-large;">Specs</h2>               
         <table>
            <tr>
               <td align="center">
                  <%= f.text_field :tf_Zip,placeholder: "Zip" %>
               </td>
            </tr>
         </table>
         <table>
            <tr>
               <td>
                  <div class="button">

                    <%= f.submit "Search", { :class => "buttonSearch"} %>

                  </div>
               </td>
            </tr>
         </table>
         </td>
      </tr>
</table>
<% end %>

我希望得到所有“Zip == 10005”的用户,我使用下面的代码:

  def search
    if ( !params[:search][:tf_Zip].blank? or params[:search][:tf_Zip] !="" )
   @user_zip = User.where(user_Zip: params[:search][:tf_zip])
end     
render 'search'
  end 

但它不能正常工作,请帮忙。感谢

3 个答案:

答案 0 :(得分:0)

您需要使用.where

 def search
    if ( !params[:tf_Zip].blank? or params[:tf_Zip] !="" )
        @user_zip = User.where(zip: params[:tf_zip])
    end     
    render 'search'
  end 

答案 1 :(得分:0)

尝试使用以下代码。

def search
 @user_zip = params[:search][:tf_Zip].blank? ? [] : User.where(zip: params[:search][:tf_Zip])
 render 'search'
end

答案 2 :(得分:0)

尝试:

def search
  @user_zip = User.where(zip: params[:tf_Zip]) if params[:tf_Zip].any?
end

您必须检查params个参数。我不确定它是params[:search][:tf_Zip]但你应该在应用程序中重新检查并写正确。