2012-05-24 62 views
1

我的配置之前修改的字段:導軌&設計:保存形式DB

設計

設計膨脹出

使用單獨的註冊記憶控制器視圖(從視圖/設計/註冊移動的文件以查看/註冊)

我有一個隱藏的字段在應該在提交表單後填寫的新註冊表單中,但該值未被保存到數據庫中。

這是我有:

在routes.rb中:

devise_for :users, :controllers => { :registrations => 'registrations' }, :path => '', :path_names => { :sign_in => "login", :sign_up => "request_invite" } 

在視圖/ regiistrations /新的,我已經COMPANY_ID定義爲隱藏字段

在模型/ user.rb ,我有:

attr_accessible: company_id 

在registrations_controller.rb,我有:

class RegistrationsController < Devise::RegistrationsController 
    ........ 
def create 
    @user = User.new(params[:user]) 
    company_id = params[:user][:company] + "_" + params[:user][:ssid] 
    params[:user][:company_id] = company_id.downcase 

    respond_to do |format| 
    if @user.save 
     flash[:notice] = "New user added" 
     format.html { redirect_to root_url } 
     format.json { render json: @user, status: :created, location: @user } 
    else 
     format.html { render action: "new" } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
    end 
    end 
end 
..... 

表單的內容保存到數據庫,但不保存到company_id。我驗證了company_id實際上是被創建的,並且實際上是作爲用戶參數的一部分傳遞的。在計算company_id之前,保存到數據庫是否發生在某處?我看到了一堆關於類似主題的StackOverflow Q/A,但是沒有任何工作或者符合我想要做的。新手在這裏,所以也許我不熟悉所有需要尋找的東西,因爲我認爲這是人們定期做的事情。

UPDATE:

要確保Q/A完成後,下面是正確的代碼:

class RegistrationsController < Devise::RegistrationsController 
........ 
    def create 
    @user = User.new(params[:user]) 
    company_id = params[:user][:company] + "_" + params[:user][:ssid] 
    @user.company_id = company_id.downcase 

    respond_to do |format| 
     if @user.save 
     flash[:notice] = "New user added" 
     format.html { redirect_to root_url } 
     format.json { render json: @user, status: :created, location: @user } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
     end 
    end 
    end 
    ..... 

回答

0

改變這一行:params[:user][:company_id] = company_id.downcase

要這樣:@user.company_id = company_id.downcase

因爲您已經使用先前的哈希值創建了對象,所以更改參數不會執行任何操作。

+0

是的,當然。有效。謝謝 – EastsideDeveloper