尝试更新用户属性以包含Songkick ID。
在视图中,我的表单助手有以下代码:
<%= 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="/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控制台中检查用户时,歌曲不是nil。
用户控制器中的更新方法如下:
def update
@user = User.find(params[:id])
if @user.update_attribute(:songkickID, params[:songkickID])
redirect_to @user
else
render 'edit'
end
end
如果我将params [:songkickID]手动更改为有效的Songkick ID,它会起作用,所以我猜测故障是用那个参数[:songkickID]?还是与文本字段?或两者兼而有之?
答案 0 :(得分:0)
因为你的params嵌套在“user”中,所以你应该
@user.update_attributes(songkickID: params[:user][:songkickID])