我正在使用rails的一種基於web的遊戲。我的目標是設置一個表單,允許用戶通過用戶更新表單在用戶/展示頁面上創建一個堡壘。我一直在使用嵌套屬性和關聯來試圖解決這個問題,但我一直在遇到錯誤。未被允許的參數錯誤的Whitlist屬性
我在模型建立的社團,如這樣的:
class Fort < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :forts
accepts_nested_attributes_for :forts
... (omitted validations)
end
而且我已經設置了我的用戶控制器,更新和編輯的操作是這樣的:
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
@user.forts.build(params[:user][:forts])
if @user.update_attributes(user_params)
render @user
else
render 'users/show'
end
end
我在表users/show view看起來像這樣:
<%= form_for @user do |f| %>
<%= f.fields_for :fort do |builder| %>
<%= builder.label :name, "Name" %>
<%= builder.text_field :name %>
<%= builder.label :ownership, "Ownership" %>
<%= builder.text_field :ownership %>
<% end %>
<%= f.submit %>
<% end %>
我的路線(我不認爲它們在這裏很重要,但只是萬一),
BR::Application.routes.draw do
resources :users
resources :sessions, only: [:new, :create, :destroy]
resources :forts
resources :encampments
root 'home#home'
match '/signup', to: 'users#new', via: 'get'
match '/signin', to: 'sessions#new', via: 'get'
match '/signout', to: 'sessions#destroy', via: 'delete'
最後我的參數被寫成這樣:
def user_params
params.require(:user).permit(:name, :email, :username, :password, :password_confirmation, forts_attributes: [ :name, :xco, :yco, :territory, :ownership ])
end
我已經在上面
def user_params
params.require(:user).permit(:name, :email, :username, :password, :password_confirmation, forts_ids: [ :name, :xco, :yco, :territory, :ownership ])
end
和
def user_params
params.require(:user).permit(:name, :email, :username, :password, :password_confirmation, :forts => [ :name, :xco, :yco, :territory, :ownership ])
end
基於
之間搖搖欲墜我見過不同的協議o其他堆棧溢出線程。沒有一個排列工作。
他們都拋出此錯誤日誌:
Unpermitted parameters: fort
整個過程是這樣的:
Started PATCH "https://stackoverflow.com/users/1" for 127.0.0.1 at 2014-09-04 20:35:02 -0400
Processing by UsersController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"srybKv+WDZubO4ez+kiwfTYZvrP4tZYe9QoxQaMgmPk=", "user"=>{"fort"=>{"name"=>"test2", "ownership"=>"43"}}, "commit"=>"Update User", "id"=>"1"}
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", "1"]]
Unpermitted parameters: fort
(0.1ms) begin transaction
User Exists (0.3ms) SELECT 1 AS one FROM "users" WHERE (LOWER("users"."email") = LOWER('[email protected]') AND "users"."id" != 1) LIMIT 1
(0.1ms) rollback transaction
Rendered users/show.html.erb within layouts/application (49.2ms)
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."remember_token" = '0705e5d60cc1be62fa51d8e407683e79f730a3b2' LIMIT 1
Completed 200 OK in 173ms (Views: 66.1ms | ActiveRecord: 5.1ms)
我敢肯定我點綴我的我的,越過我的T的,但現在我拉我的頭髮試圖找到我的錯誤。任何幫助,你們可以給予,將永遠與我的謝意回報。我仍然可以想象的唯一問題是我在用戶/表演視圖中放置了一個更新表單,但我幾乎可以肯定這是一件很好的事情。再次
感謝,
亞歷克斯·P
這工作。謝謝噸!我仍然無法獲得交易保存,但錯誤消失了,我可能會弄清楚,謝謝 – obventio56 2014-09-05 11:08:19