Ruby on rails 无法更新Rails中的单个属性,参数为[]时出错
正在尝试更新用户属性以包含Songkick ID 在视图中,我的表单帮助器有以下代码:Ruby on rails 无法更新Rails中的单个属性,参数为[]时出错,ruby-on-rails,forms,rails-activerecord,Ruby On Rails,Forms,Rails Activerecord,正在尝试更新用户属性以包含Songkick ID 在视图中,我的表单帮助器有以下代码: <%= form_for(@user) do |f| %> <%= render 'shared/error_messages' %> <%= f.text_field :songkickID %> <%= f.submit "Songkick ID", :type => :image, :src => image_path("songki
<%= 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 %>
如果我手动将params[:songkickID]更改为有效的Songkick ID,它会工作,所以我猜错误在于params[:songkickID]?还是使用文本字段?或者两者都有?因为您的参数嵌套在“user”中,所以您应该这样做
@user.update_attributes(songkickID: params[:user][:songkickID])
你应该做params[:user][:songkickID],你的params嵌套在user中,因为你的资源是user..而且你更新的方式也是错误的,你应该做update_属性(songkickID:params[:user][:songkickID]),如果你使用rails4Thanks,不要忘了允许params,就像你在第二条评论中更新的链接一样,并且成功了,我将以此作为答案!我不需要更改任何权限,这是否意味着我应该检查我的参数是否强大?我认为你在我的第二条评论中映射你的参数的方式,你不需要允许它…我不知道为什么,但你不需要这样做,我已经问了一个问题,看到了,但没有找到足够的答案,我如何将您的评论设置为答案?
def update
@user = User.find(params[:id])
if @user.update_attribute(:songkickID, params[:songkickID])
redirect_to @user
else
render 'edit'
end
end
@user.update_attributes(songkickID: params[:user][:songkickID])