在Rails中构建选择框或过滤器

时间:2013-12-06 23:01:53

标签: ruby-on-rails ruby ruby-on-rails-3.1

嗨,也许这是一个傻瓜问题,但我真的试着找不到任何相关的信息,(也许因为我不知道从哪里开始看)...

我需要构建一个带选项的选择框,以便用户可以通过我所拥有的candidate.poisition值“过滤”。此时视图有此代码..

我正在使用:params,将它们发布到URL中(我总是做php,我在做导轨导致我的任务现在是插入一个设计,我实现了一切,只是缺少一个选择框过滤器)

无论如何..这里是代码..这很简单

    <% @candidates.each do |candidate| %>

      <% if (candidate.active == true) && (candidate.position.present?) %>

All the html code with info.. like 

<%= candidate.name %> : <%= candidate.position? ? t('generales.'+candidate.position) : t('activerecord.models.elite') %>

    <% end %>

    <% end %>

我怎么能做到这一点,因为我真的是Rails中的菜鸟,我是PHP上的普通用户,甚至没有真正好的jaja,请,我希望有人可以帮我这个。

我可以使用这样的内容:How to do a LIKE query in Arel and Rails?

candidates.where("position like '%?%'", params[:query]).to_sql

另外,如何在PHP中构建Post,不知道如何更改要过滤的位置。

模型Candidate.rb里面有这个:S

class Candidate < ActiveRecord::Base
end

1 个答案:

答案 0 :(得分:1)

基本上你是对的。这是改进的代码:

<% @candidates.each do |candidate| %>
  <% if candidate.active && candidate.position.present? %>

    <%= candidate.name %> : <%= t("generales.#{candidate.position}") %>

  <% end %>
<% end %>

评论中的每个请求更新:

在控制器中使用这样的代码:

if params[:position] == 'red'
  @candidates = @candidates.where(position: 'red') 
elsif params[:position] == 'blue'
  @candidates = @candidates.where(position: 'blue') 
else
  @candidates = Candidate.all
end

并构建将传递参数position的html表单。

或者您可以使用https://github.com/activerecord-hackery/ransack