搜索功能不起作用-Ruby on Rails

我是Ruby on Rails的新手,它试图以简单的形式实现搜索功能以过滤出可用性结果。按搜索按钮后,它仍停留在同一页面上,并且未在控制器中运行搜索功能。允许为假。我想知道为什么会发生这种情况。我写的search_params有什么问题吗? Rails版本是6.0.2.1。

views / availabilities / _searchform.html.erb

<form>
    <div id="aDiv">
        <%= simple_form_for :search,:url => search_rides_result_path,:method => :get do |f| %>
        <div class="form-row">
            <div class="form-group col-md-2">
                <%= f.input :start_city,label: 'Start City',class: "form-control",error: 'Start address is mandatory,please specify one' %>
            </div>
            <div class="form-group col-md-4">
                <%= f.input :start_street_address,label: 'Start Street Address',class: "form-control" %>
            </div>
        </div>
        <div class="form-row">
            <div class="form-group col-md-2">
                <%= f.input :end_city,label: 'Destination City',class: "form-control" %>
            </div>
            <div class="form-group col-md-4">
                <%= f.input :end_street_address,label: 'Destionation Street Address',class: "form-control" %>
            </div>
        </div>
        <div class="form-row">
            <div class="form-group col-md-4">
                <%= f.input :trip_time,as: :datetime,inline_label: 'Yes,remember me',class: "form-control" %>
            </div>
            <div class="form-group col-md-2">
                <%= f.input :lowest_acceptable_price,label: 'Expected Price',class: "form-control" %>
            </div>
        </div>
            <%= f.submit "Search",class: "btn btn-primary" %>
        <% end %>
    </div>
</form>

routes.rb文件。

  get 'search_rides',to: "availabilities#index"
  get 'search_rides_result',to: "availabilities#search"

availabilities_controller.rb

  def index
    @availabilities = Availability.unmatched
  end

  def search
    @availabilities = Availability.unmatched.search(search_params[:start_city])
  end

  def search_params
    params.require(:search).permit(:start_city,:start_street_address,:end_city,:end_street_address,:trip_time,:lowest_acceptable_price)
  end

models / availability.rb

class Availability < ApplicationRecord
    has_many :users,:through => :posts
    has_one :request
    scope :unmatched,->{ where(matched_request_id: -1) }

    def self.search (params)
        puts "start searching"
        results = city_matches(start_city,end_city,params[:start_city],params[:end_city]) 
        return nil unless results
        results
    end
yuagqian 回答:搜索功能不起作用-Ruby on Rails

尝试使用两种不同的搜索方法,而不是使用两种不同的搜索方法。现在,您的索引方法将如下所示:

    TextComponent{
        background-color: rgba(0,0.0);

    }
    TextComponentField{
        color: white;
    }

将格式def index if params[:search] @availabilities = Availability.unmatched.search(search_params[:start_city]) else @availabilities = Availability.unmatched end end 更改为url。这样,在提交表单后,搜索结果将以相同的视图呈现。

本文链接:https://www.f2er.com/2581299.html

大家都在问