如何在 Rails 中显示我的搜索结果?

Posted

技术标签:

【中文标题】如何在 Rails 中显示我的搜索结果?【英文标题】:How can I display my search results in rails? 【发布时间】:2021-12-10 19:35:57 【问题描述】:

当我在字段中写入城市并单击按钮时,页面上必须是该城市的名称和另一个。就我而言,每次的名字都是纽约。当我写例如拉斯维加斯时,我的链接是http://localhost:3000/?query=Las+Vegas&commit=Search,页面上的数据是关于纽约的。

class HomeController < ApplicationController
  def index
    require 'net/http'
    require 'json'

    @params = 
      :access_key => "1dbc1a3aa6b2e76a0c8eda1cba0c9c8b",
      :query => "New York"
    
    @uri = URI("http://api.weatherstack.com/current?access_key=1dbc1a3aa6b2e76a0c8eda1cba0c9c8b&query=#@params[:query]")
    @uri.query = URI.encode_www_form(@params)
    @json = Net::HTTP.get(@uri)
    @api_response = JSON.parse(@json)
    if @params[:query].empty?
      @city = "Enter city"
      @temperature = "(in English)"
    else
      @city = " #@api_response['location']['name']"
      @temperature = "#@api_response['current']['temperature']°"
    end
  end
end

routes.rb

Rails.application.routes.draw do
  root 'home#index', :as => 'search'
end

index.html.erb

<div class="main">
  <h1 class="weather">Weather</h1>
  <%= form_with(url: search_path, method: "get", local: true) do %>
    <%= text_field_tag(:query) %>
    <%= submit_tag("Search",class: "btn btn-primary") %>
  <% end %>
  <div class="city"> <h1><%= @city %>  <h5><%= @temperature %></h5></h1> </div>
</div>

【问题讨论】:

【参考方案1】:

看起来您在参数中硬编码了纽约。

@params = 
      :access_key => "1dbc1a3aa6b2e76a0c8eda1cba0c9c8b",
      :query => "New York"
    

所以你需要把它改成这样:

@params = 
      :access_key => "1dbc1a3aa6b2e76a0c8eda1cba0c9c8b",
      :query => params[:query]
    

【讨论】:

以上是关于如何在 Rails 中显示我的搜索结果?的主要内容,如果未能解决你的问题,请参考以下文章

Rails 使用 will Paginate 进行搜索

Rails 跨多个模型搜索

在 rails 中显示范围的结果

Ruby on Rails:搜索表单 - 多个搜索字段

如何在 Rails 中使用 jquery tokeninput?

如何使用 rails 和 jquery 优化 ajax 搜索