我剛接觸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
謝謝!
收到'PARAMS [:房]'在你的控制器,並使用'PARAMS [:房]' – apneadiving
謝謝。所以如果我理解正確。我只是有到控制器更改爲: 愛得屋= Room.new(PARAMS [:房]) 但後來我得到這樣的錯誤: ::加載ActiveModel ForbiddenAttributesError 我錯過了什麼? – oliver
看到強大的參數 – apneadiving