我在Apidock中查找了link_to
但是根本无法获得正确的Rails语法来创建以下内容:
<a href="/benefits/create" class="btn btn-primary">All Changes Complete</a>
我有:
<%= link_to t('view.benefits.all_changes_complete'), { controller: "benefits", action: "create", method: :post }, { class: "btn btn-primary"} %>
上面的语法类型工作,但method: :post
被添加到href并单击链接执行GET,导致以下结果:
<a class="btn btn-primary" href="/benefits/create?method=post">All Changes Complete</a>
试试吧。
控制器是benefits
然后如果你运行命令rake routes
然后它将显示看起来像这样
的routes.rb
resources :benefits
Prefix Verb URI Pattern Controller#Action
benefits GET /benefits(.:format) benefits#index
POST /benefits(.:format) benefits#create
创建行动是benefits_path
,当它去post
方法比link_to
将是
<%= link_to "All Changes Complete", benefits_path, method: :post, class: "btn btn-primary"%>
它会生成HTML看起来像
<a rel="nofollow" data-method="post" href="/benefits" class="btn btn-primary"> All Changes Complete</a>
点击后,它的动作看起来像
POST /benefits(.:format) benefits#create
然后,如果你需要发送parameters
然后link_to
看起来像
<%= 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]
而已
希望能帮助到你
如果要创建新记录(或通过补丁更改记录),请使用post。
form_tag({:controller => "benefits", :action => "create"}, :method => "post", :class => "btn btn-primary")