2014-03-12 83 views
1

我剛接觸rails並想知道爲什麼我的表單不會將數據寫入數據庫? 如果我顯示控制器的數據,如rails名稱空間表單不會將數據寫入數據庫

render text: params[:post].inspect 

它顯示我正確的細節。如果我發送表單到數據庫只顯示一個新的ID和created_at和updated_at數據。

也許還有誰可以幫我...

這裏有我的文件:

LOG:

tarted POST "/manage/rooms" for 127.0.0.1 at 2014-03-12 09:45:28 +0100 
Processing by Manage::RoomsController#create as HTML 
Parameters: {"utf8"=>"✓","authenticity_token"=>"7IrPpFfkK4Krc4u6YYpUcaCp+", 
"rooms"=>{"number_of_rooms"=>"1", "occupancy"=>"1", "room_type"=>"Private Room", 
"gender"=>"mixed", "title"=>"foo"}, "commit"=>"Save Rooms"} (0.2ms) BEGIN 
SQL (0.4ms) INSERT INTO "rooms" ("created_at", "updated_at") VALUES ($1, $2) 
RETURNING "id" [["created_at", Wed, 12 Mar 2014 08:45:28 UTC +00:00], 
["updated_at", Wed, 12 Mar 2014 08:45:28 UTC +00:00]] (660.8ms) COMMIT 
Redirected to http://localhost:3000/manage/rooms/27 
Completed 302 Found in 664ms (ActiveRecord: 661.3ms) 

控制器(控制器/管理/ room_cont ...)

class Manage::RoomsController < ApplicationController 

def new 
end 

def create 
    #render text: params[:rooms].inspect 
    @room = Room.new(params[:room]) 
    @room.save 
    redirect_to [:manage, @room] 
end 

def show 
    @room = Room.find(params[:id]) 
end 

private 
    def room_params 
    params.require(:room).permit(:number_of_rooms, :occupancy, :room_type, :gender, :title) 
    end 
end 

型號:(型號/ room.rb)

class Room < ActiveRecord::Base 
end 

形式:(/views/manage/rooms/form.html ...)

<%= simple_form_for [:manage, @room], manage_room_path do |f| %> 
<p> 
<%= f.input :number_of_rooms, collection: 1..20, :include_blank => false %> 
</p> 
<p> 
<%= f.input :occupancy, collection: 1..20, :include_blank => false %> 
</p> 
<p> 
<%= f.input :room_type, collection: ["Private Room", "Shared Room (Dorm)"],:include_blank => false %> 
</p> 
<p> 
<%= f.input :gender, collection: ["mixed", "male", "female"], :include_blank => false %> 
</p> 
<P> 
<%= f.label :title %><br> 
<%= f.text_field :title %> 
</p> 
<p> 
<%= f.submit %> 
</p> 
<% end %> 

路線:

manage_rooms GET /manage/rooms(.:format)   manage/rooms#index 
        POST /manage/rooms(.:format)   manage/rooms#create 
    new_manage_room GET /manage/rooms/new(.:format)  manage/rooms#new 
    edit_manage_room GET /manage/rooms/:id/edit(.:format) manage/rooms#edit 
     manage_room GET /manage/rooms/:id(.:format)  manage/rooms#show 
        PATCH /manage/rooms/:id(.:format)  manage/rooms#update 
        PUT /manage/rooms/:id(.:format)  manage/rooms#update 
        DELETE /manage/rooms/:id(.:format)  manage/rooms#destroy 

謝謝!

+2

收到'PARAMS [:房]'在你的控制器,並使用'PARAMS [:房]' – apneadiving

+0

謝謝。所以如果我理解正確。我只是有到控制器更改爲: 愛得屋= Room.new(PARAMS [:房]) 但後來我得到這樣的錯誤: ::加載ActiveModel ForbiddenAttributesError 我錯過了什麼? – oliver

+0

看到強大的參數 – apneadiving

回答

0

在你創建行動:

@room = Room.new(room_params) 

,並在您room_params方法,這樣做:params.require(:rooms).permit...

+0

感謝它現在正在工作! – oliver