gpt4 book ai didi

ruby-on-rails - 更新 Rails 模型的属性

转载 作者:行者123 更新时间:2023-12-04 05:46:08 28 4
gpt4 key购买 nike

在我的应用程序中,我试图让管理员用户可以编辑“帖子”的一个属性

帖子模型是:

class PostsController < ApplicationController

before_filter :admin_user, only: [:edit, :update]

def edit
@post = Post.find(params[:id])
end

def update
@post = Post.find(params[:id])
if @post.update_attributes(params[:post][:some_attr])
flash[:success] = "Post updated"
redirect_to posts_path
else
redirect_to root_path
end
end

编辑 View 是:
  <% provide(:title, "Edit post") %> 
<h1>Update the post</h1>

<div class="row">
<div class="span6 offset3">
<%= form_for(@post) do |f| %>
<%= f.label :some_attr %>
<%= f.text_field :some_attr %>

<%= f.submit "Save changes", class: "btn btn-large btn-primary" %>
<% end %>

当我尝试在编辑页面的 some_attr test_field 中输入“123”时,它呈现错误:
NoMethodError in PostsController#update

undefined method `stringify_keys' for "123":String


Application Trace | Framework Trace | Full Trace
app/controllers/posts_controller.rb:22:in `update'
Request

Parameters:

{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"EdTg+cFBnZY447oSDqSTPfb/PJ6VisJOrQ8kvichDrE=",
"post"=>{"some_attr"=>"123"},
"commit"=>"Save changes",
"id"=>"17"}

可能是什么问题呢?我错过了哪一块拼图?

谢谢

最佳答案

问题是这一行:

 if @post.update_attributes(params[:post][:some_attr])
params[:post][:some_attr]只是一个值。未指定字段。如果您将行更改为
 if @post.update_attributes(params[:post])

该属性应按预期更新。

关于ruby-on-rails - 更新 Rails 模型的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10661932/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com