【问题标题】:How do I create a link_to tag with both class and data fields?如何创建包含类和数据字段的 link_to 标记?
【发布时间】:2018-04-10 22:15:57
【问题描述】:
我想创建一个 Rails 的 link_to 标记,它最终会生成一个对话框,因此它只是链接到“#”。但是,我希望它有一个类和数据属性。但是当我尝试这个时
<%= link_to "What's This?", "#", {class: "more_info"}, :data => { :more_info => 'mt_hashes_info' } %>
我得到了错误
wrong number of arguments (given 4, expected 0..3)
构建此链接的正确方法是什么?
【问题讨论】:
标签:
ruby-on-rails
class
ruby-on-rails-5
link-to
custom-data-attribute
【解决方案1】:
它应该是这样的:
<%= link_to "What's This?", "#", {:class => "more_info", :data => { :more_info => 'mt_hashes_info' }} %>
类和数据都进入相同的选项哈希。
【解决方案2】:
你可以像这样简单地做到这一点
<%= link_to "What's This?", "#", class: "more_info", data: { more_info: "mt_hashes_info" } %>
生成的 HTML
<a class="more_info" data-more-info="mt_hashes_info" href="#">What's This?</a>
与confirmation 对话
<%= link_to "What's This?", "#", class: "more_info", data: { confirm: "Are you sure?" } %>
生成的 HTML
<a class="more_info" data-confirm="Are you sure?" href="#">What's This?</a>
你可以找到更多link_to
【解决方案3】:
这是一个来自 Redmine 核心的示例:
link_to(l(:button_archive), archive_project_path(project, :status => params[:status]), :data => {:confirm => l(:text_are_you_sure)}, :method => :post, :class => 'icon icon-lock')
对连续声明感到抱歉;你知道红米!但请注意 :data 和 :class 都是同一个 Hash 的对等点...