Rails 2.3.8:显示一个按钮作为超链接

时间:2011-03-13 10:38:10

标签: ruby-on-rails button put

我对Ruby on Rails比较陌生。截至目前,我的Rails 2.3.8应用程序中的一个视图中有这个工作代码:

 <% form_for(@configuration) do |f| %>
 <%= f.text_field :parameter_a %>
 <%= f.text_field :parameter_b %>
 <%= button_to( "Apply", {} , { :method => "put" } ) %>
 <% end %>

按预期按“应用”按钮调用控制器中的update。现在我想以超链接样式显示按钮,我正在寻找最有效的方法。

也许有其他方法,但我没有弄清楚如何正确使用link_to。它从未传递PUT请求中的更新值。如果你推荐link_to,请提供一些提示,如何做到这一点。这是非工作代码:

<%= link_to( "Apply", configuration_path( @configuration ), { :method => "put" } ) %>

非常感谢。

2 个答案:

答案 0 :(得分:0)

提交带有HTML链接的表单的唯一方法(我知道)是通过使链接触发一些javascript。

这是伪代码,用您选择的javascript库替换实际的表单提交:

<% form_for(@configuration), :id=>'my_form' do |f| %>
  <%= f.text_field :parameter_a %>
  <%= f.text_field :parameter_b %>
  <%= link_to_function "Apply", "$('my_form').submit()" %>
<% end %>

答案 1 :(得分:0)

一种方法是使用html button元素和一些css。我更喜欢这种技术,因为它不需要JS。这也可以在输入标签上完成,使用它们的类型或类来选择它们,但按钮更好;)

顺便说一句,你不应该在那里使用button_to。 Rails'button_to标签应该在表单之外使用(因为它构建了自己的表单),你应该使用f.submit。它将生成一个提交类型的输入。或者,您可以使用提交按钮。

回到使用button标签,我更喜欢创建一个帮手:

def submit_button(text)
  content_tag :button, text, :type => :submit
end

然后,一旦你使用了它,你可以使按钮看起来像这个css的链接:

button {
  background-color: transparent;
  border: none;
  color: #1f44ff;
  text-decoration: underline;
}

button:hover {
  cursor: pointer;
}

您可能需要使用JS来使悬停状态在某些浏览器中起作用,但它仍然比使用JS提交表单更好。