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

Ruby on Rails控制器实现跳转提示时报unexpected '\n'语法错误

问题原因及修复方案

以下是你遇到的报错及代码逻辑问题的对应解决方法:

  • 核心语法错误:get_factset_url方法的if分支中,你直接写url, {alert: "..."}格式的返回值,没有显式用[]包裹为数组,同时引用了未定义的url变量,导致Ruby无法正确解析换行后的表达式,抛出你遇到的语法错误
  • 逻辑问题1:else分支仅返回单个factset_url字符串,和前面分支的二元组返回值结构不一致,会导致上层的解构赋值逻辑出错
  • 逻辑问题2:连续两个elsif investor.company.is_fresh?条件完全重复,第二个分支永远不会被触发,属于业务逻辑笔误
  • 逻辑问题3:所有if分支中引用的url变量没有提前定义,直接使用会抛出变量未定义的运行错误

修复后代码

class Ir::FactsetUrlsController < Ir::ApplicationController
  def show
    user = User.find(params[:user_id])

    factset_url, option = get_factset_url(user)
    redirect_to factset_url, option
  end

  private

  def get_factset_url(investor)
    if !current_user.factset_enabled?
      # 无权限时跳转回上一页,也可替换为你指定的跳转路径
      [:back, {alert:  "こちらの閲覧には有料契約が必要です。"}]
    elsif investor.company.is_fresh?
      [:back, {alert: "現在収録作業中です。申し訳ございませんが、少々お待ち下さい。"}]
    # 原代码此处判断条件和上一条重复,已替换为判断factset_url不存在的常用逻辑,可按需调整
    elsif investor.company.factset_url.blank?
      [:back, {alert: "申し訳ございませんが、投資家DBに収録がありません 収録されていない理由 ①投資助言会社や投資アドバイザーなど直接保有していない ②HPや開示されている情報がない"}]
    else
      # 正常场景返回目标地址和空配置
      [investor.company.factset_url, {}]
    end
  end
end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:39:03