我有以下HTML和.erb代码:
<button type="button" class="btn btn-default btn-lg"><%= link_to "Customer Information", customer_information_path %></button>
链接呈现正常,但点击时无效。
这是我的路线档案:
devise_scope :user do
root :to => "devise/sessions#new"
end
get "hub" => "pages#hub"
get "customer_information" => "pages#customer_information"
这是我的页面控制器:
class PagesController < ApplicationController
def hub
end
def customer_information
end
end
代码不会抛出任何错误。
思想?
答案 0 :(得分:7)
link_to
助手会生成<a>
元素而您无法在<a>
内加<button>
,这会违反the content model for <button>
:< / p>
内容模型:
短语内容,但必须没有互动内容后代。
和interactive content包含<a>
。如果您向浏览器提供<button><a></a></button>
,则可能会将HTML重写为有效,或者可能无法让点击转到<a>
。
考虑使用button_to
生成<button>
而不是<button>
和link_to
,或尝试在JavaScript中为<button>
添加点击处理程序。使用button_to
可能会使CSS变得复杂,因为button_to
会添加大量额外标记(例如<form>
和<div>
s)。另一种选择可能是仅使用工具栏中的<a>
元素,但将它们设置为按钮样式,然后您可以将link_to
用于整个工具栏。
答案 1 :(得分:2)
以下修订工作:
<ul>
<li><%= link_to "Customer Information", customer_information_path, :class => "btn btn-default btn-lg" %></li>
</ul>
所以看起来将类应用于link_to元素会生成CSS结果,并且仍然允许链接起作用。
答案 2 :(得分:2)
按钮强>
在mu is too short
的答案的基础上,您必须考虑button
的目标 -
标签定义了一个可点击的按钮。
在元素中,您可以放置内容,例如文本或图像。 这是此元素与使用的按钮之间的区别 元素。
由mu is too short
提到,button
元素是独立的(不能包含任何其他元素)。这意味着如果您想使用该按钮创建链接,您必须对您尝试实现的目标进行不同的思考
-
<强> button_to 强>
Rails有两种方法可以实现&#34;链接&#34;:
您正在寻找的内容可能是button_to
:
<%= button_to "New", new_articles_path %>
# => "<form method="post" action="/articles/new" class="button_to">
# <div><input value="New" type="submit" /></div>
# </form>"
正如您在上面的演示中所看到的,这创建了一个简单的表单,允许您将数据发送到端点。对于链接来说,这似乎有些过分,但这是创建&#34; native&#34;的最佳方式。 HTML按钮。或者,您也可以样式将link
作为按钮
<%= button_to "Customer Information", customer_information_path, method: :get, class: "btn btn-default btn-lg"