0

我对 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" } ) %>

非常感谢。

4

2 回答 2

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 %>
于 2011-03-13T10:54:30.157 回答
0

一种方法是使用 htmlbutton元素和一些 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 提交表单要好。

于 2011-03-13T11:48:35.723 回答