Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 无法更新Rails中的单个属性,参数为[]时出错_Ruby On Rails_Forms_Rails Activerecord - Fatal编程技术网

Ruby on rails 无法更新Rails中的单个属性,参数为[]时出错

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

正在尝试更新用户属性以包含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 %>

如果我手动将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])