Ruby on rails 如何使用Rails link_发布到控制器并具有HTML类属性?
我在Apidock中查找了指向的Ruby on rails 如何使用Rails link_发布到控制器并具有HTML类属性?,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我在Apidock中查找了指向的链接,但无法获得正确的Rails语法来创建以下内容: <a href="/benefits/create" class="btn btn-primary">All Changes Complete</a> <a class="btn btn-primary" href="/benefits/create?method=post">All Changes Complete</a> 何时使用get请求 如果不更改状
链接,但无法获得正确的Rails语法来创建以下内容:
<a href="/benefits/create" class="btn btn-primary">All Changes Complete</a>
<a class="btn btn-primary" href="/benefits/create?method=post">All Changes Complete</a>
何时使用get请求
- 如果不更改状态,请使用get请求。如果您基本上是在显示信息
- 不要使用get请求创建记录。这不是rails的标准做法。如果您使用一个简单的链接从get请求中创建记录,您将不会受到跨站点请求伪造的保护
何时使用邮政
如果要创建新记录(或通过修补程序更改记录),请使用post
- 如果您没有执行get请求,那么基本上需要使用表单(无论您如何解决问题)。大概是这样的:
form_标签({:controller=>“benefits”,:action=>“create”},:method=>“post”,:class=>“btn btn primary”)
目的
- 是否表示用户已审阅表单?这听起来像是对信息的检索,因此您可以通过命名路由使用get请求
- 您还可以使用助手方法来提供相同的信息,而无需使用命名路由
- 您也可以在原始表单上使用复选框,用户必须勾选该复选框,以表明他们在提交表单之前已阅读表单等
试试这个
控制器是
benefits
,如果运行命令rake routes
,则显示如下所示
routes.rb
resources :benefits
创建操作是benefits\u path
当它转到post
方法时,将显示link\u to
<%= link_to "All Changes Complete", benefits_path, method: :post, class: "btn btn-primary"%>
然后,如果您需要发送参数
,则链接到
<a rel="nofollow" data-method="post" href="/benefits" class="btn btn-primary"> All Changes Complete</a>
POST /benefits(.:format) benefits#create
<%= link_to "All Changes Complete", benefits_path(param1: 'value1', param2: 'value2'), method: :post, class: "btn btn-primary" %>
<a rel="nofollow" data-method="post" href="/benefits?param1=value1¶m2=value2" class="btn btn-primary">All Changes Complete</a>
就这样
希望有帮助您是提出get请求还是post请求?如果您试图发出post请求,那么您应该使用表单,并使表单看起来像带有提交按钮的链接。Rails将在表单中添加一个安全令牌,以防止跨站点请求伪造攻击——如果您试图通过一个简单的链接发出这样的post请求,您将接受这种攻击。我假设您没有删除应用程序控制器中与标准rails应用程序一起插入的protect_from_fagery方法。@BKSpurgeon-谢谢您的回答,问得好。实际上,我并不是真的尝试支持表单或数据,只是尝试将RESTful路由添加回我的控制器,以表明用户已经查看了信息。那么我应该去一条指定的路线吗?希望我的控制器只具有index/show/update/create方法。使用GET-to-a/create方法似乎很奇怪——或者是真的吗?请更新答案。使用GET请求创建东西是rails的禁忌。请参见下面的答案。希望有帮助。很抱歉,将其更改为post并更新了iThanks,但html“class”属性如何?这就是我遇到的问题,如果我把它作为一个参数添加到链接中,它会将它添加到url中…我已经更新了刚才添加的答案,类:“btn btn primary”
支持数据方法
为
跨主要浏览器和框架指定HTTP请求方法?这个解决方案似乎对我不起作用。
<%= link_to "All Changes Complete", benefits_path(param1: 'value1', param2: 'value2'), method: :post, class: "btn btn-primary" %>
<a rel="nofollow" data-method="post" href="/benefits?param1=value1¶m2=value2" class="btn btn-primary">All Changes Complete</a>
params[:param1]
params[:param2]