【问题标题】:Building a selectbox or filter in Rails在 Rails 中构建选择框或过滤器
【发布时间】:2013-12-24 11:13:42
【问题描述】:

嗨,也许这是一个愚蠢的问题,但我真的试图寻找任何相关信息,(可能是因为我不知道从哪里开始查看)..

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

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

无论如何.. 这是代码.. 非常简单

    <% @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 中那样构建帖子,不知道,以改变你想要过滤的位置。

Model Candidate.rb 里面有这个 :S

class Candidate < ActiveRecord::Base
end

【问题讨论】:

  • 执行筛选列表的选择涉及一定数量的步骤。例如:选择本身、控制器操作、JavaScript 部分(如果您使用 AJAX 执行此操作)。目前尚不清楚您的问题是关于哪一个。此外,尚不清楚您发布的代码 sn-p 与该问题有何关系。
  • 我一直在 PHP 中工作,我也知道 AJAX,但我不知道如何在 Rails 上实现它。在 PHP 中发布一个 $var 将发送信息以修改查询或条件询问。但是在这里,我不知道

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


【解决方案1】:

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

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

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

  <% end %>
<% end %>

在 cmets 中按请求更新:

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

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

【讨论】:

  • 但是该代码已经可以正常工作了..我只需要制作一个选择框来按候选位置进行过滤..我是一个rails noob,我不知道该怎么做..跨度>
  • 这是我得到的壁橱,但我无法使用我的代码使其工作..stackoverflow.com/questions/15474883/…
  • 是的!我只是在看洗劫,无论如何,谢谢你的回答只是一件事......如果我设置一个 URL /candidates?position=position1 这会工作吗? ....我的意思是视图上的选择框
  • 但语法没问题 domain.com/candidates?position=red
  • 是的,如果表单使用获取请求。您可以在控制器中使用index 操作。
猜你喜欢
  • 2017-08-14
  • 2016-10-31
  • 2016-10-10
  • 1970-01-01
  • 2021-08-30
  • 1970-01-01
  • 2013-06-19
  • 2017-07-06
  • 1970-01-01
相关资源
最近更新 更多