我正在使用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