ruby 由于更新语法,制动员错误解析值“)”错误

pgvzfuti  于 2023-02-18  发布在  Ruby
关注(0)|答案(1)|浏览(97)

我最近安装了Brakeman,并在我的系统上运行了Gem。它正在拾取的一个错误与我认为是括号的内容有关。
它拾取错误的代码行是:

%p=link_to("Click here", url_for(only_path: false, host: ConfigSetting.get("FORGET_PASSWORD_HOST_PREFIX","localhost"), account_new_passwd_reset_path(key: @guid)))

我最近更新了语法,在“account_new_passwd_path”后面需要一个额外的括号。我相信这就是问题所在,但我不明白为什么。
我的过时代码是:

%p=link_to("Click here", url_for(:only_path=>false, :host=>ConfigSetting.get("FORGET_PASSWORD_HOST_PREFIX","localhost"), :controller=>:account, :action=>:new_passwd_reset, :key=>@guid))

正如你所看到的,在路由方面,这是围绕key @guid区域的最大变化。
我收到的错误是“错误:应用程序/视图/密码重置邮件程序/密码重置。haml:3::值“)”上出现解析错误(tRPAREN)无法解析app/views/密码重置邮件程序/密码重置.haml'

eanckbw9

eanckbw91#

问题在于参数的顺序,关键字参数需要在参数列表的末尾,但是还有一个问题,即url助手和url_for一起使用实际上没有意义。
只需更改:

%p=link_to(
     "Click here", 
     url_for(
       only_path: false, 
       host: ConfigSetting.get("FORGET_PASSWORD_HOST_PREFIX","localhost"), 
       account_new_passwd_reset_path(key: @guid)
     )
   )

%p=link_to(
     "Click here", 
     account_new_passwd_reset_url(
       host: ConfigSetting.get("FORGET_PASSWORD_HOST_PREFIX","localhost"), 
       key: @guid
     )
   )

请注意,后缀是_url而不是_path,这将测试Rails构建一个包括主机名的完整URL。

相关问题