我想通过Rails中的link_to
方法传递一个参数。我知道可以通过URL来实现,但我真的不想这样做。有没有办法在不将参数添加到链接本身的情况下通过链接传递参数?
我知道在PHP中可以使用post变量发布并检索该值。Rails中是否有类似的东西?
我想通过Rails中的link_to
方法传递一个参数。我知道可以通过URL来实现,但我真的不想这样做。有没有办法在不将参数添加到链接本身的情况下通过链接传递参数?
我知道在PHP中可以使用post变量发布并检索该值。Rails中是否有类似的东西?
link_to
的函数签名如下:
link_to(body, url_options = {}, html_options = {})
那么,POST请求将如下所示(假设您想要提交用户数据):
link_to "Link text", some_path(:foo => "bar", :baz => "quux"), user: @user, :method => :post
可以在控制器中使用params[:user]
来检索用户的数据。
<%= link_to "Link Text", new_widget_path(:foo => @foo) %>
def new
@widget = Widget.new(:foo => params[:foo])
end
<%= form_for(@widget) do |f| %>
<%= f.label :other_attribute %><br />
<%= f.text_field :other_attribute %>
<%= f.hidden_field :foo %>
<%= f.submit %>
<% end %>
http://example.com/foo?bar=blah
,这是 link_to 所做的 GET 请求;或者通过通常需要表单的 POST 操作。如果您只想要一个提交按钮,则表单可以有隐藏元素。<form method="POST" action="http://example.com/foo">
<input type="hidden" name="bar" value="blah">
<input type="submit">
</form>
如果需要构建表单,有各种rails助手可供使用。
最后,如果你真的需要一个链接,你可以使用CSS样式化按钮,或者使用JavaScript观察链接,然后POST信息。(Simon Bagreev发布的方法使用JavaScript实现了这一点)