gpt4 book ai didi

ruby-on-rails - 在 rails 中使用 params 给出 ArgumentError : When assigning attributes, 你必须传递一个散列作为参数

转载 作者:太空宇宙 更新时间:2023-11-03 18:06:33 28 4
gpt4 key购买 nike

我使用的 params 是一个散列,但我仍然收到此错误,指出 ArgumentError(分配属性时,您必须将散列作为参数传递。)这是我的部分代码:

项目/app/controllers/index_controller.rb:

class IndexController < ApplicationController
helper_method :create
def create
@post = Post.new(params[:data_value])
end
end

项目/app/models/post.rb:

class Post < ActiveRecord::Base
belongs_to :user
has_many :posts, :dependent => :delete_all
end

项目/config/routes.rb:

Rails.application.routes.draw do
root "index#index"
post "/customurl", to: "index#create"
end

来自 Project/app/assets/javascripts/index.js 的 ajax 请求:

$.ajax({
url : "/customurl",
type : "post",
data : { data_value: "Hello" }
})

当我从 View 中打印 create 方法的返回值时,它会为每次调用显示一个随机的十六进制值。任何人都可以帮助我让我知道我在做什么错误。

最佳答案

您将 params[:data_value] 传递给 Post 对象。从您的脚本看来,params[:data_value] 等于 "Hello"。相反,Post.create 需要一个散列。

您应该执行 Post.create(params)Post.create(data_value: params[:data_value])。另外,查看 https://github.com/rails/strong_parameters确保您的参数安全。

关于ruby-on-rails - 在 rails 中使用 params 给出 ArgumentError : When assigning attributes, 你必须传递一个散列作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44150700/

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