我正在使用params这是一个哈希,但是我得到这个错误说明ArgumentError(当分配属性时,你必须传递一个哈希作为参数。)以下是我的代码的一部分:
项目/应用/控制器/ index_controller.rb:
class IndexController < ApplicationController
helper_method :create
def create
@post = Post.new(params[:data_value])
end
end
项目/应用/模型/ post.rb:
class Post < ActiveRecord::Base
belongs_to :user
has_many :posts, :dependent => :delete_all
end
项目/配置/ routes.rb中:
Rails.application.routes.draw do
root "index#index"
post "/customurl", to: "index#create"
end
来自项目/ app / assets / javascripts / index.js的$.ajax({
url : "/customurl",
type : "post",
data : { data_value: "Hello" }
})
当我从视图中打印create
方法的返回值时,它会为每个调用显示一个随机的十六进制值。任何人都可以通过让我知道我正在做的错误来帮助我。
答案 0 :(得分:3)
您将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以确保您的参数安全。