首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4搜索多个参数

Rails 4搜索多个参数
EN

Stack Overflow用户
提问于 2015-05-28 23:14:49
回答 3查看 4.2K关注 0票数 5

如果存在两个参数,我会搜索并找到结果,但是我会被发送到car_show_path,但是应该有结果。

模型

代码语言:javascript
复制
class Car < ActiveRecord::Base
  def self.search(car_number, car_model) 
    where(['car_number = ? AND car_model = ?', "%#{car_number}%", "%#{car_model}%"])
  end
end

控制器显示

代码语言:javascript
复制
 @search = Car.search(params[:car_number], params[:car_model])
   if @search.present?
       @search
    else
     redirect_to car_path, notice: "Not a valid combination"
    end

表格

代码语言:javascript
复制
<%= simple_form_for :search, url: car_show_path do |f| %>
  <%= f.input :car_number, :collection => @car.collect {|c| [c.number]}, :include_blank => false %>
  <%= f.input :car_model, placeholder: "Car Model" %>
  <%= f.button :submit, 'Generate', class: 'btn' %>
<% end %>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-04 06:46:29

你做错了。如果您查看服务器日志中生成的params散列,您可以看到类似于此:search => {:car_model => "value", :car_number => "Value"}的内容。这意味着:car_model:car_number的值不能用params[:car_model]params[:car_number]检索,而应该使用params[:search][:car_model]params[:search][:car_number]

代码语言:javascript
复制
@search = Car.search(params[:search][:car_number], params[:search][:car_model])
if @search.present?
  @search
else
  redirect_to car_path, notice: "Not a valid combination"
end
票数 9
EN

Stack Overflow用户

发布于 2016-03-05 11:15:09

我看到你提供的密码了。我相信你写的代码需要改进。因此,我有重新编写的代码,可以解决您的问题,并实现您的目标。下面是:

代码语言:javascript
复制
#/app/models/car.rb

class Car < ActiveRecord::Base
  def self.search(cn, cm) 
    where('car_number = ? AND car_model = ?', cn, cm)
  end
end

#/app/controllers/cars_controller.rb

class CarsController < ApplicationController

  def search
    @result = Car.search params[c_number], params[c_modal]
  end
end


#/app/views/cars/search.html.erb
#you can generate similar form with simple_form_for

<form action="/search" method="/get" >
  <input type="text" name="c_number"
  <input type="text" name="c_modal">
  <input type="submit" value="search">
</form>

<% if !@result.any? %>
  Not a valid combination
<% end %>

<% @result.each do |r|%>
  <%= r.car_number %>
  <%= r.car_modal %>
<% end %>


#/config/routes.rb

get "/search" => "cars#search"

注意:以上代码是我最好的实践,并且没有在本地执行。

希望能帮上忙!

票数 3
EN

Stack Overflow用户

发布于 2015-05-28 23:17:43

您正在从发送到搜索方法的查询参数中将相同的值放入两个占位符中。这似乎不对。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30518582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档