我想在rails中通过link_to传递参数。但是,我不希望它成为URL的一部分。我经历了答案here,但没有帮助。
我使用的是苗条的模板,并且与此类似:
= link_to "Test", test_path(param1: "value1"), param2: 'value2', param3: value3, :method => :post
我希望param1成为URL的一部分,但不希望param2和param3。但是,params[:param2]
或params[:param3]
给我一个空白值。
关于如何做到这一点的任何想法?
hidden_field_tag 'token', 'VUBJKB23UIVI1UU1VOBVI@' => <input id="token" name="token" type="hidden" value="VUBJKB23UIVI1UU1VOBVI@" />
https://apidock.com/rails/ActionView/Helpers/FormTagHelper/hidden_field_tag
link_to
创建一个普通的旧<a>
链接元素。链接在所有浏览器中的工作方式是它们发送GET请求。由于GET请求没有主体,因此发送参数的唯一方法是通过URL。这就是HTTP的工作方式,与Rails中的限制无关。
Rails具有button_to
,实际上使用单个按钮创建了一个表单,该按钮可用于通过隐藏输入传递数据。但是,要将参数传递到正文中(而不是URL),则需要使用POST,PUT或PATCH HTTP方法。
<%= button_to "Mark as read", @book, method: :patch, params: { state: :read } %>
[link_to
还具有method
选项,其结果与button_to
相同,但是它依靠javascript拦截click事件并创建一个发送到服务器的表单。
<%= link_to "Mark as read", @book, method: :patch, params: { state: :read } %>
如果带[method]选项的link_to
不起作用(它发送GET请求),则页面上出现JavaScript错误,这导致Rails UJS无法正常工作。