Ruby on rails 将链接_中的参数传递到
我想通过Rails中的Ruby on rails 将链接_中的参数传递到,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想通过Rails中的link\u方法传递一个参数。我知道有一种方法可以通过URL实现,但我真的不想这么做。有没有办法通过链接传递参数而不将其添加到链接本身 我知道在PHP中,可以使用post变量发布并检索该值。Rails中有类似的东西吗?链接到签名如下: link_to(body, url_options = {}, html_options = {}) 所以,POST看起来像(假设您想发布用户的数据): 可以使用params[:User]在控制器中检索用户数据,通过web请求传递信息可以通
link\u
方法传递一个参数。我知道有一种方法可以通过URL实现,但我真的不想这么做。有没有办法通过链接传递参数而不将其添加到链接本身
我知道在PHP中,可以使用post变量发布并检索该值。Rails中有类似的东西吗?
链接到
签名如下:
link_to(body, url_options = {}, html_options = {})
所以,POST看起来像(假设您想发布用户的数据):
可以使用
params[:User]
在控制器中检索用户数据,通过web请求传递信息可以通过URL:http://example.com/foo?bar=blah
在一个GET请求中,这是link\u要做的,或者通过一个POST操作,这通常需要一个表单。如果您只需要“提交”按钮,则表单可能具有隐藏元素:
<form method="POST" action="http://example.com/foo">
<input type="hidden" name="bar" value="blah">
<input type="submit">
</form>
如果需要,可以使用各种rails助手来帮助构建表单
最后,如果你真的想要一个链接,你可以用CSS设计这个按钮,或者你可以用javascript观察一个链接,然后发布信息。(Simon Bagreev发布的方法是用javascript实现的)什么类型的参数?如果它是GET请求的键,则约定将指定使用url(例如,params[:id]或活动记录路径变量)。如果你想发布一些东西,你应该使用一个表单。否则,您可以编写一个helper方法来设置会话变量或其他东西,但请考虑一下您的体系结构以及您在语义上试图做的事情,我相信这里有人可以帮助您。以下是如何通过link_to方法传递参数,以便使用传递的参数创建一个新对象。此策略允许您在控制器中的操作之间传递变量,并创建具有预定义属性的对象: 假设在show视图中,有一个名为@foo的变量,您希望将其传递给新的控制器操作。在这种情况下,在show视图中,您可以
<%= link_to "Link Text", new_widget_path(:foo => @foo) %>
def new
@widget = Widget.new(:foo => params[:foo])
end
然后,在您的new.html.erb视图文件中,您可以允许用户创建一个新的窗口小部件对象,其中该预定义的foo属性已通过隐藏的表单字段填写:
<%= form_for(@widget) do |f| %>
<%= f.label :other_attribute %><br />
<%= f.text_field :other_attribute %>
<%= f.hidden_field :foo %>
<%= f.submit %>
<% end %>
允许用户创建一个已经填写了foo属性的新小部件 本质上,这是一个GET请求,所以我可能不应该做我想做的事情,而应该遵循惯例。目前,我的路由嵌套得很好——已经在URL中使用了大约6个段。我试图避免使用URL来放置另外几个片段。这个解决方案的神奇之处在于它如此详细和清晰。非常感谢你的发帖。一年后仍然有用。此示例仍然没有显示如何在点击链接到url后,在进入新页面的表单之前,在url中“隐藏”参数。谢谢。我不明白为什么Simon Bagreev的解决方案会起作用。现在,我必须寻找CSS或JavaScript的解释。
<%= form_for(@widget) do |f| %>
<%= f.label :other_attribute %><br />
<%= f.text_field :other_attribute %>
<%= f.hidden_field :foo %>
<%= f.submit %>
<% end %>