Ruby on rails 在rails中使用参数会导致ArgumentError:分配属性时,必须将哈希作为参数传递
我使用的params是一个散列,但仍然会出现以下错误,即ArgumentError(分配属性时,必须将散列作为参数传递)。以下是我的部分代码: Project/app/controllers/index\u controller.rb:Ruby on rails 在rails中使用参数会导致ArgumentError:分配属性时,必须将哈希作为参数传递,ruby-on-rails,ruby,ruby-hash,Ruby On Rails,Ruby,Ruby Hash,我使用的params是一个散列,但仍然会出现以下错误,即ArgumentError(分配属性时,必须将散列作为参数传递)。以下是我的部分代码: Project/app/controllers/index\u controller.rb: class IndexController < ApplicationController helper_method :create def create @post = Post.new(params[:data_val
class IndexController < ApplicationController
helper_method :create
def create
@post = Post.new(params[:data_value])
end
end
class Post < ActiveRecord::Base
belongs_to :user
has_many :posts, :dependent => :delete_all
end
Rails.application.routes.draw do
root "index#index"
post "/customurl", to: "index#create"
end
$.ajax({
url : "/customurl",
type : "post",
data : { data_value: "Hello" }
})
来自Project/app/assets/javascripts/index.js的ajax请求:
class IndexController < ApplicationController
helper_method :create
def create
@post = Post.new(params[:data_value])
end
end
class Post < ActiveRecord::Base
belongs_to :user
has_many :posts, :dependent => :delete_all
end
Rails.application.routes.draw do
root "index#index"
post "/customurl", to: "index#create"
end
$.ajax({
url : "/customurl",
type : "post",
data : { data_value: "Hello" }
})
当我从视图打印
create
方法的返回值时,它会为每个调用显示一个随机十六进制值。任何人都可以帮助我,让我知道我犯了什么错误。将params[:data\u value]
传递给Post对象。在脚本中,它看起来像是参数[:data\u value]
等于“Hello”
。相反,Post.create
需要一个散列
您应该执行
Post.create(params)
或Post.create(data\u-value:params[:data\u-value])
。另外,请检查以确保您的参数安全。您可以使用服务器日志中的参数更新问题吗?您很正确!我得到了ActiveModel::禁止属性错误
当我这样做时,post=post.create(params)
Yes,post.create(params)
是一个坏例子。尝试从参数中提取值。e、 g.Post.create(data\u-value:params[:data\u-value])
。但首先,我强烈建议阅读强参数。它还将有助于使用params处理此问题。