button_to 创建不可点击的按钮
button_to creates non-clickable button
我注意到 button_to
有一个奇怪的行为。我有一些程式化的按钮。当生成 button_to
时,输入提交字段被放置在按钮元素内。最终发生的是单击按钮的内边缘不会将用户重定向到新页面。用户被迫直接点击文本进行重定向。
我的问题是,我该如何解决这个问题?我不认为 CSS 是一个可能的解决方案。理想情况下,我想将我在 button_to
方法中传递的 类 应用到输入字段。这样输入字段就变成了按钮而不是表单。
这是button_to
方法。
button_to("Click me!",
"/new-course",
{class: 'start-course-button is-normal start-course'}
).html_safe
这里是生成的html。
<form class="start-course-button is-normal start-course" method="post" action="/new-course">
// This must be clicked below and not the form itself for there to be a redirect
<input type="submit" value="Click me!">
<input type="hidden" name="authenticity_token" value="secret_auth_token">
</form>
button_to
不允许您应用 类 或自定义提交输入。
如果您需要这种灵活性,您可以使用 form_tag
手动创建表单。 经过编辑以展示它在演示者中的工作方式。
class CoursePresenter
def initialize(helpers)
@h = helpers
end
def new_course_button
h.form_for("/new-course") do
h.submit_tag "/new-course",
class: 'start-course-button is-normal start-course'
end
end
private
attr_reader :h
end
您还可以使用以输入元素为目标的 CSS 规则,而不是以下形式:
.start-course-button input[type="submit"] {
border: 2px solid black;
padding: 10px 15px;
background-color: pink;
}
<form class="start-course-button">
<input type="submit" value="Click me">
</form>
目前,您正在将样式应用于 form
而不是其中的 submit
输入。您可以使用子 select 或 select submit
输入作为 form
的子输入以获得纯 CSS 解决方案。
为清楚起见,创建一个新的 class 以应用于表单。此 class 将 select 类型为 submit
的子输入。
.start-course-form input[type="submit"] {
/* button styles */
}
然后,使用正确的 class.
更新您的辅助方法
button_to("Click me!",
"/new-course",
{class: 'start-course-form is-normal start-course'}
).html_safe
请注意,这不会使按钮成为 start-course-button
class 的成员,它只是看起来一样。
我注意到 button_to
有一个奇怪的行为。我有一些程式化的按钮。当生成 button_to
时,输入提交字段被放置在按钮元素内。最终发生的是单击按钮的内边缘不会将用户重定向到新页面。用户被迫直接点击文本进行重定向。
我的问题是,我该如何解决这个问题?我不认为 CSS 是一个可能的解决方案。理想情况下,我想将我在 button_to
方法中传递的 类 应用到输入字段。这样输入字段就变成了按钮而不是表单。
这是button_to
方法。
button_to("Click me!",
"/new-course",
{class: 'start-course-button is-normal start-course'}
).html_safe
这里是生成的html。
<form class="start-course-button is-normal start-course" method="post" action="/new-course">
// This must be clicked below and not the form itself for there to be a redirect
<input type="submit" value="Click me!">
<input type="hidden" name="authenticity_token" value="secret_auth_token">
</form>
button_to
不允许您应用 类 或自定义提交输入。
如果您需要这种灵活性,您可以使用 form_tag
手动创建表单。 经过编辑以展示它在演示者中的工作方式。
class CoursePresenter
def initialize(helpers)
@h = helpers
end
def new_course_button
h.form_for("/new-course") do
h.submit_tag "/new-course",
class: 'start-course-button is-normal start-course'
end
end
private
attr_reader :h
end
您还可以使用以输入元素为目标的 CSS 规则,而不是以下形式:
.start-course-button input[type="submit"] {
border: 2px solid black;
padding: 10px 15px;
background-color: pink;
}
<form class="start-course-button">
<input type="submit" value="Click me">
</form>
目前,您正在将样式应用于 form
而不是其中的 submit
输入。您可以使用子 select 或 select submit
输入作为 form
的子输入以获得纯 CSS 解决方案。
为清楚起见,创建一个新的 class 以应用于表单。此 class 将 select 类型为 submit
的子输入。
.start-course-form input[type="submit"] {
/* button styles */
}
然后,使用正确的 class.
更新您的辅助方法button_to("Click me!",
"/new-course",
{class: 'start-course-form is-normal start-course'}
).html_safe
请注意,这不会使按钮成为 start-course-button
class 的成员,它只是看起来一样。