2013-10-28 45 views
1

我有一個簡單的新形式是這樣的:Rails的行動接受JSON作爲輸入,轉換JSON到對象,然後保存

<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 

所有我想要的是我的方法創建接受輸入的JS然後將這些參數轉換爲用戶對象,然後保存該對象。

UPDATE:

我有以下創建其定義爲POST方法:

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

我送以下JSON,但它永遠不會被保存:

{"firstName":"John", "lastName:"Doe", "userName":"johndoe", "password":"mypassword", "email":"[email protected]"} 

更新:

通過以下JSON後:

{"user":{"firstName":"John", "lastName:"Doe", "userName":"johndoe", "password":"mypassword", "email":"[email protected]"}} 

我碰到下面的錯誤在我的應用程序的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;[email protected]&quot;}}&#39;</h2> 

UPDATE:

現在我碰到下面的錯誤後,我得到了JSON正確的:

的ActionController :: InvalidAuthenticityToken UsersController中的 #create

回答

1

錯誤你在你的控制器使用下面的代碼,而不是隻允許某些參數遇到來自Strong Parameters,默認情況下它包含在Rails的Rails的4.嘗試:

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 
+0

感謝我得到它的工作!但是創建操作是否需要json參數。我想採用json參數,然後將其轉換爲用戶對象,然後保存用戶對象。 –

+0

表單將使用'POST'請求​​發送參數,因此它不使用json參數,但它將用於創建新用戶。您顯示的表單是唯一希望從中獲得新用戶的地方,還是您需要使用應用程序製作API? – jvperrin

+0

我需要使用我的應用程序創建一個API,然後將其與我的iOS應用程序一起使用!謝謝你的幫助。第一天使用Rails:( –