0

hy,我正在尝试更新用户资源中的单个字段。要更新的字段是'locale',它是一个字符串类型。

我有一个表格,它可以工作:

 <%= form_for current_user do |f| %>
       <%= f.select :locale, [['En', 'en'], ['It', 'it']] %>
       <%= f.submit %>
 <% end %>

现在我正在尝试使用链接或按钮更新相同的字段:

 <%= current_user.locale = 'fr'  %>

 <%= button_to "update" ,current_user,method: :patch %>

 <%= button_to "update" ,user_path(current_user),method: :patch %>

但这些都不起作用。

问题是请求,实际上 Web 服务器没有接收 current_user 参数:

 {"_method"=>"patch",
 "authenticity_token"=>"7X6QdD4DGxsXaETT86/8Ut4xyuOICaxirs4IjmZl7jY=",
 "locale"=>"en",
 "id"=>"1"}

没有 current_users 参数。

我已经尝试过使用 link_to 但问题是一样的:

<%= link_to "update", current_user ,method: :patch %>

我不知道。你能帮助我吗?

4

1 回答 1

0

您没有将参数发送回服务器这一事实是预期的,因为您不使用表单。

为了将参数传回,您必须:

  1. 使用表格(就像你一样)或
  2. 在按钮的url中传递参数:button_to 'update', user_path(param_name: 'param_value')

在第二种情况下,您必须在操作中搜索适当的参数,例如params[:param_name]

于 2013-09-27T11:16:03.583 回答