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
相关产品推荐
相关产品推荐

