我正在使用Ruby on Rails,并且有一个简单的表单gem,如下所示:
代码问题
<%= simple_form_for [:admins, @calendar_entry],
url: toggle_visibility_admins_calendar_entry_path(calendar_entry),
method: :patch,
remote: true do |f| %>
<%= f.input_field :visible,
id: 'switch-sm-#{calendar_entry.id.to_s}',
class: 'switch',
type: 'checkbox' %>
<% end %>
它会以HTML格式获得以下输出(检查输入中的 id属性):
<form novalidate="novalidate" class="simple_form new_calendar_entry" id="new_calendar_entry" action="/admins/calendar_entries/35/toggle_visibility" accept-charset="UTF-8" data-remote="true" method="post">
<input id="switch-sm-#{calendar_entry.id.to_s}" class="boolean optional switch" type="checkbox" value="1" name="calendar_entry[visible]">
</form>
忽略简单形式的remote: true
和所有属性,真正的问题是 id属性中的插值,出于任何原因,无法获取变量的数据,但是,我可以这样做:
标准错误代码
<%= simple_form_for [:admins, @calendar_entry],
url: toggle_visibility_admins_calendar_entry_path(calendar_entry),
method: :patch,
remote: true do |f| %>
<%= f.input_field :visible,
id: 'switch-sm-'+calendar_entry.id.to_s,
class: 'switch',
type: 'checkbox' %>
<% end %>
是的,这第二个代码有效,但是我想通过第一个选项通过插值来实现,所以我的问题是:
答案 0 :(得分:3)
执行字符串插值时需要使用双引号,并且不需要调用to_s
(它将自动转换为字符串)。...
id: "switch-sm-#{calendar_entry.id}"