undefined方法`permit'代表“51”:字符串

时间:2015-06-08 07:03:49

标签: ruby-on-rails params

当我更新时会出现此错误,我不知道为什么会出现此错误

def update1
 @user = User.find(params[:user])
 if @user.update_attributes(user_params)
   redirect to user_steps_path
 else
   render 'edit1'
 end
 end

private
  def user_params
    params.require(:user).permit(:fname, :lname, :email)
  end
end

参数:

{"utf8"=>"✓",
 "authenticity_token"=>"wY+llV4qot5xDsxp1JvaltvPdrZND7goaorBTh8Vteo=",
 "user"=>"51",
 "commit"=>"Update"}

Edit.html.erb

这是我的编辑表格

<%= form_for :user do |f| %>
    <div class="form-group">
    <%= f.label :First_Name %><br />
    <%= f.text_field :fname, :class=> 'form-control' %>
  </div>
  <div class="form-group">
    <%= f.label :Last_Name %><br />
    <%= f.text_field :lname, :class=> 'form-control' %>
  </div>
  <div class="form-group">
    <%= f.label :Email_Address %><br />
    <%= f.email_field :email, :class=> 'form-control' %>
  </div>
  <div class="button">
    <%= f.submit 'Update' %>
  </div>
</div>

<% end %>

请帮我解决这个问题......

3 个答案:

答案 0 :(得分:3)

您的代码现在的形式没有意义:

@user = User.find(params[:user])
if @user.update_attributes(user_params)

在第一行中,您假设params [:user]等于id。在第二个中,你假设它是一个属性的散列。

无论如何要解决问题,您需要修改user_params方法,例如:

def user_params
  if params[:user].is_a? String
    params[:user]
  else
    params.require(:user).permit(:fname, :lname, :email)
  end
end

或者更改传递ID的方式:

params = {"utf8"=>"✓",
 "authenticity_token"=>"wY+llV4qot5xDsxp1JvaltvPdrZND7goaorBTh8Vteo=",
 "user"=>{ "id" => "51" },
 "commit"=>"Update"}

@user = User.find(params[:user][:id])

def user_params
  params.require(:user).permit(:id, :fname, :lname, :email)
end

答案 1 :(得分:3)

您在update1方法和user_params方法中给出了相同的名称(:user)。这就是它给出错误的原因

def update1
@user = User.find(params[`:user`])

private
   def user_params
    params.require(`:user`).permit(:fname, :lname, :email)
end

尝试在

中更改:user(提供其他名称)
@user = User.find(params[`:user`])

答案 2 :(得分:0)

我通过将:user键放在根级别

中解决了这个问题
{
 "user":
  {"utf8": "✓",
   "authenticity_token": "wY+llV4qot5xDsxp1JvaltvPdrZND7goaorBTh8Vteo=",
   "id": "51",
   "fname": "fname",
   "lname": "lname",
   "email": "email",
   "commit": "Update"
  }
}