Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用Rails link_发布到控制器并具有HTML类属性?_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 如何使用Rails link_发布到控制器并具有HTML类属性?

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请求 如果不更改状

我在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请求
  • 如果不更改状态,请使用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&param2=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&param2=value2" class="btn btn-primary">All Changes Complete</a>
      
      params[:param1]
      params[:param2]