Rails - 使用text_field作为数据属性的值

时间:2016-01-22 18:38:16

标签: ruby-on-rails twitter-bootstrap

我试图实现一个显示引导弹出窗口的按钮,当单击时会显示一个文本字段,用户可以输入要与之共享帖子的人的电子邮件地址。
这里是按钮的代码:

  <%= link_to collab_user_stories_path(@post), class: 'btn btn-default', title: 'Enter the email of the person you want to share this with:', 'data-toggle' => 'popover', 'data-trigger' => 'focus', 'data-html' => 'true', 'data-content' => '<%= text_field_tag :user %>' do %>
    <span class="glyphicon glyphicon-plus-sign"></span>&nbsp;Collaborate with...
  <% end %>


我在'data-content' => '<%= text_field_tag :user %>'部分收到错误。
它说:&#34;意外的keyword_end,期待&#39;)&#39; &#34;

我已经尝试'data-content' => '#{<%= text_field_tag :user %>}'并仍然得到同样的错误。

任何人都有任何想法如何做到这一点?

非常感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

你的第一行应该是:

<%= link_to collab_user_stories_path(@post), 
      title: 'Enter the email of the person you want to share this with:', 
      'data-toggle' => 'popover', 
      'data-trigger' => 'focus', 
      'data-html' => 'true', 
      'data-content' => text_field_tag( :user ),
      class: 'btn btn-default', do %>

原样,您正在尝试在erb中嵌入erb标记,而这些标记无法正常工作。

另外,您可以尝试上课:&#39; btn btn-default&#39;,link_to标记中的最终哈希键/值。

答案 1 :(得分:0)

当您添加data-content时,您已经在使用ruby代码,因此您不需要另外一组<%= %>,您已经在其中!

你需要做这样的事情:

<%= link_to (...) 'data-content' => text_field_tag(:user) do %>

我相信这应该有用,我过去做过类似的事情

请记住,当您在<%= %>文件中输入.erb标记时,您正在严格编写ruby代码。

你不会在ruby中这样做:

{
  'data-content' => '<%= my_method(:param) %>'
}

因此,您不应该在模板中的ruby代码中执行此操作。

答案 2 :(得分:0)

<%= link_to collab_user_stories_path(@post), class: 'btn btn-default', title: 'Enter the email of the person you want to share this with:', data: { toggle: "popover", trigger: "focus", html: "true", content: text_field_tag(:user) } do %>
    <%= content_tag :span, "Collaborate with...", class: "glyphicon glyphicon-plus-sign" %>
<% end %>

由于您正在使用erb,因此您不需要重新解析text_field_tag,而只需将其作为link_to方法的参数包含在内。您还需要注意data attribute of link_to应该作为哈希传递。