Ruby on Rails使用form_with时出现syntax error, unexpected tIDENTIFIER错误
Rails form_with 语法错误修复方案
问题核心
你的代码报错是因为哈希参数之间缺少逗号,加上冗余的引号写法也导致了语法解析失败。
修正后的代码(两种可选)
方案1:遵循Rails约定(推荐)
如果@request是已经保存过的模型实例,form_with会自动推断出PATCH方法和对应的更新路径,无需手动指定:
<%= form_with model: @request do |f| %>
方案2:手动指定method和url
如果必须明确指定参数,要确保哈希键值对之间用逗号分隔,且method直接用符号写法:
<%= form_with model: @request, method: :patch, url: requests_update_path(id: @request.id) do |f| %>
错误原因拆解
- 原代码中
model: @request和method: :"patch"之间没有加逗号,Ruby解析时会把method:当成方法调用,触发syntax error, unexpected tIDENTIFIER method: :"patch"属于冗余写法,直接用method: :patch即可,符号不需要额外加引号包裹
补充:form_tag的正确写法
如果改用form_tag,注意参数结构和form_with不同,url是第一个参数,选项哈希放在后面:
<%= form_tag requests_update_path(id: @request.id), method: :patch do %>
内容的提问来源于stack exchange,提问作者Francisca Aguayo
相关产品推荐
相关产品推荐

