1

我有一个像这样的简单新表格:

<h1> New </h1>

<%= form_for :user, url: 'create' do |f| %>

    <p>
    <%= f.label :firstName %>   
    <%= f.text_field :firstName %>
    </p>

    <p>
    <%= f.label :lastName %>    
    <%= f.text_field :lastName %>
    </p>

    <p>
    <%= f.label :userName %>    
    <%= f.text_field :userName %>
    </p>

    <p>
    <%= f.label :password %>    
    <%= f.text_field :password %>
    </p>

    <p>
    <%= f.label :email %>   
    <%= f.text_field :email %>
    </p>

    <p>
        <%= f.submit %>
    </p>

<% end %>

如您所见,它调用了下面定义的创建操作:

def create  
    @user = User.new(params[:user])
    @user.save
  end 

它给了我以下错误:

ActiveModel::ForbiddenAttributesError

Extracted source (around line #8):
6
7
8
9
10
11

  def create 

    @user = User.new(params[:user])
    @user.save

  end 

我想要的是我的方法创建接受输入作为 json 参数,然后将这些参数转换为用户对象,然后保存该对象。

更新:

我有以下定义为 post 的创建方法:

def create  
  @user = User.new(user_params)   
  @user.save  
  end 

我正在发送以下 json,但它永远不会被保存:

{"firstName":"John", "lastName:"Doe", "userName":"johndoe", "password":"mypassword", "email":"johndoe@gmail.com"}

更新:

传递以下 JSON 后:

{"user":{"firstName":"John", "lastName:"Doe", "userName":"johndoe", "password":"mypassword", "email":"johndoe@gmail.com"}}

我的 HTTPClient 应用程序中出现以下错误:

<h2>795: unexpected token at &#39;{&quot;user&quot;:{&quot;firstName&quot;:&quot;John&quot;, &quot;lastName:&quot;Doe&quot;, &quot;userName&quot;:&quot;johndoe&quot;, &quot;password&quot;:&quot;mypassword&quot;, &quot;email&quot;:&quot;johndoe@gmail.com&quot;}}&#39;</h2>

更新:

现在我得到正确的 JSON 后出现以下错误:

用户控制器中的 ActionController::InvalidAuthenticityToken#create

4

1 回答 1

1

您遇到的错误来自Strong Parameters,Rails 4 默认包含在 Rails 中。尝试在控制器中使用以下代码,而不是只允许某些参数:

def create
  @user = User.new(user_params)
  @user.save

  respond_to do |format|
    format.json { render :json => @user }
  end
end

private

  def user_params
    params.require(:user).permit(:firstName, :lastName, :userName, :password, :email)
  end
于 2013-10-28T02:30:21.213 回答