2014-12-31 72 views
0

所以,我遇到了一個相當簡單的問題,我無法在SQLite數據庫(Rails)中輸入一些簡單的表單值。有趣的是,代碼不會失敗 - 我提交表單,並且被成功重定向到正確的URL - 並且將記錄插入到數據庫中,但「name, type and user_id」列沒有填充任何內容。爲了澄清,列的空白,爲新的記錄。無法簡單地將表單信息輸入到SQLite數據庫(Rails)

如果我註釋掉「create」,簡單的代碼吐出PARAMS(render plain: params[:plan].inspect)我確實看到所有正確的參數填寫,所以我有一種感覺,必須有在該行一些錯誤:

@plan = Plan.new(params[:plan]) 

我真的被困在這裏,任何指導都將不勝感激!

的創建形式

<h1> Create a new plan </h1> 

<%= form_for :plan, url: plans_path do |f| %> 
    <p> 
    <%= f.label :name %><br> 
    <%= f.text_field :name %> 
    </p> 

    <p> 
    <%= f.label :type %><br> 
    <%= f.text_field :type %> 
    </p> 

    <%= f.hidden_field :user_id, :value => current_user.id %> 

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

plans_controller.rb

class PlansController < ApplicationController 

    def index 
    @plans = Plan.all 
    end 

    def show 
    @plan = Plan.find(params[:id]) 
    end 

    def new 
    @plan = Plan.new 
    end 

    def create 
    #render plain: params[:plan].inspect 
    params.permit! 
    @plan = Plan.new(params[:plan]) 
    if @plan.save 
     redirect_to @plan 
    else 
     redirect_to dashboard_path, :notice => "Plan NOT Created!" 
    end 
    end 

end 

示範

class Plan < ActiveRecord::Base 

end 

回答

1

Ë DIT的plans_controller.rb: -

def create 
    #render plain: params[:plan].inspect 
    @plan = Plan.new(plan_params) 
    if @plan.save 
    redirect_to @plan 
    else 
    redirect_to dashboard_path, :notice => "Plan NOT Created!" 
    end 
end 

private 

def plan_params 
    params.require(:plan).permit(:name,:type,:user_id) 
end 

更改字段名稱type爲: -

rails g migration rename_fields_in_plans 

class RenameFieldsInPlans < ActiveRecord::Migration 
    def change 
    rename_column :plans, :type, :plan_type 
    end 
end 

然後運行命令: -

rake db:migrate 
+0

謝謝,但同樣的問題依然。 – user2656127

+0

用不同的名稱改變'type'字段的名字,比如'plan_type'或者別的東西,然後嘗試,因爲'type'被rails用於STI http://api.rubyonrails.org/classes/ActiveRecord/Base.html –

+0

啊,我明白了 - 這是一個保留名稱。我是否需要更改數據庫中的列名或只是在表單中? – user2656127

相關問題