将 ERB 插值为 HTML 值属性 (Rails)

Interpolating ERB as an HTML value attribute (Rails)

我正在尝试将数据作为隐藏输入标签的 value 属性中的参数传递:

<input name="quote[destination]" value= <%= "#{quote["InboundLeg"]["OriginCity"]}" %> type="hidden" />

提交表单时,参数包含要插入的字符串的第一个单词,并删除第一个 space 之后的所有内容。

如果我决定像这样通过值将普通字符串传递给参数:

<input name="quote[destination]" value= "foo bar buzz" type="hidden" />

与前一种情况不同,整个字符串都通过了。任何人都可以阐明为什么会这样以及一些可能的解决方案吗?

将该行更改为:

<input name="quote[destination]" value="<%= quote["InboundLeg"]["OriginCity"] %>" type="hidden" />

请注意,引号在 ERB 声明之外。

或者您可能想使用 hidden_field_tag 表单助手来创建这样的隐藏输入字段并且阅读起来更好:

<%= hidden_field_tag 'quote[destination]', quote["InboundLeg"]["OriginCity"] %>

如果我有选择的话,我总是会使用助手,因为恕我直言,像第一个例子那样混合 HTML 和 ERB 是一种不好的做法。

将您的输入标签替换为

<input name="quote[destination]" value= "<%= quote['InboundLeg']['OriginCity'] %>" type="hidden" />

您必须对值应用引号