Rails形成params没有" params"键

时间:2018-03-29 18:20:06

标签: ruby-on-rails

我的表单作为PATCH请求发布到正确的路由,但没有使用" params" ActionController::Parameters中的键有一个键,表单是调用表单的路径,这是我的表单:

<%= simple_form_for applicants_profile_path, method: :patch do |f| %>
  <%= f.input :first_name %>
  <%= f.button :submit, "submit" %>
<% end %>

当我的控制器收到请求时,params有一个url而不是&#34; params&#34;

<ActionController::Parameters {"utf8"=>"✓", 
  "_method"=>"patch", 
  "authenticity_token"=>"BI...f0EDQ==", 
  "/dashboard/profile"=>{
    "first_name"=>"dfasfdsafs", 
  }, 
  "commit"=>"submit", 
  "controller"=>"applicants/profile", 
  "action"=>"update"} permitted: false>

这是为什么?而不是/dashboard/profile它应该params正确吗?

我还应该说这条路线是一个&#34;资源&#34;像这样的路线:

resource :applicant, only: [ :show, :update ], as: :profile, path: 'profile', controller: 'profile'

2 个答案:

答案 0 :(得分:1)

答案实际上似乎与simple_form如何处理奇异资源的路由有关,答案是将ah=02h添加到我的表单助手中:

url: applicants_profile_path

答案 1 :(得分:0)

您需要以简单形式传递对象,例如:

<%= simple_form_for @user do |f| %>
  <%= f.input :username %>
  <%= f.input :password %>
  <%= f.button :submit %>
<% end %>

我想你的应该是:

<%= simple_form_for @applicant, method: :patch do |f| %>
  <%= f.input :first_name %>
  <%= f.button :submit, "submit" %>
<% end %>

或者

<%= simple_form_for applicants_profile_path(@applicant), method: :patch do |f| %>
#... you get the idea