You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails中如何正确显示搜索结果?搜索城市始终返回纽约数据

问题修复说明

根因

HomeController的index方法中,调用天气接口的查询参数被硬编码为固定值New York,没有读取用户提交的搜索参数,导致无论输入任何城市,接口请求始终查询纽约的天气数据。

修复步骤

修改HomeController中@params的query字段赋值逻辑,优先读取用户提交的query参数,无提交参数时使用默认值New York即可。

修复后完整代码:

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

    @params = {
      :access_key => "1dbc1a3aa6b2e76a0c8eda1cba0c9c8b",
      # 优先取用户提交的query参数,为空则用默认值New York
      :query => params[:query].presence || "New York"
    }
    @uri = URI("http://api.weatherstack.com/current")
    @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

注:顺便优化了URI初始化逻辑,原代码先拼接了带参数的URI,后续又用encode_www_form覆盖了query字段,属于冗余逻辑,直接初始化基础接口地址即可。

验证

修改完成后重启服务,输入城市名搜索即可返回对应城市的天气数据。

内容的提问来源于stack exchange,提问作者Maksym

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:36:05