0
错误尝试更新用户属性以包含Songkick ID。无法在Rails中更新单个属性,使用params []
在视图中,我有我的形式帮助下面的代码:
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages' %>
<%= f.text_field :songkickID %>
<%= f.submit "Songkick ID", :type => :image, :src => image_path("songkicklogo.png"), id: "skLogo" %>
<% end %>
在网页源代码,我看到:
<form accept-charset="UTF-8" action="https://stackoverflow.com/users/1" class="edit_user" id="edit_user_1" method="post">
<div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" />
<input name="_method" type="hidden" value="patch" /><input name="authenticity_token" type="hidden" value="asdal;skalskd;laskd;asdj=" />
</div>
<input id="user_songkickID" name="user[songkickID]" type="text" />
<input id="skLogo" name="commit" src="/assets/songkicklogo.png" type="image" value="Songkick ID" />
所以它看起来我喜欢它应该通过文本字段更新用户属性。但是,当我在Rails控制台中检查用户时,songkickid不是。
在用户控制器的更新方法如下:
def update
@user = User.find(params[:id])
if @user.update_attribute(:songkickID, params[:songkickID])
redirect_to @user
else
render 'edit'
end
end
如果更改PARAMS [:songkickID]手动为一个有效的ID Songkick的,它的工作原理,所以我猜测故障是与PARAMS [:songkickID]?或者与文本字段?或两者?
你应该做的PARAMS [:用户] [:songkickID],您的params为嵌套在用户,因为你的资源是用户.. –
和你更新的方式也是错误的你应该做update_attributes(songkickID:params [:user] [:songkickID]),并且不要忘记如果你正在使用rails4允许params –
感谢你的提示,评论和它的工作,我会把它作为答案!我不需要改变任何权限,这是否意味着我应该检查,看看我的参数是否强大? – Amir