"no implicit conversion of Symbol into String" 尝试创建新记录时
"no implicit conversion of Symbol into String" when trying to create a new record
当我尝试创建新记录时出现错误 no implicit conversion of Symbol into String
,我不明白这是因为所有数据都是由字符串组成的。
在我的控制器中:
def new
@account = Account.new
end
def create
@account = Account.new(account_params)
if @account.save
redirect_to(:action => 'index')
else
render('new')
end
end
private
def account_params
params.require(:account).permit(:username, :firstname, :lastname, :organisation, :phonenumber, :avatar, :about, :verified)
end
表格很简单:
<%= form_for(@account) do |f| %>
<div>
<%= f.label :username %><br>
<%= f.text_field :username %>
</div>
<div>
<%= f.label :firstname %><br>
<%= f.text_field :firstname %>
</div>
<div>
<%= f.label :lastname %><br>
<%= f.text_field :lastname %>
</div>
... more of the same...
<div class="actions">
<%= f.submit %>
</div>
<% end %>
以及迁移文件:
class CreateAccounts < ActiveRecord::Migration
def change
create_table :accounts do |t|
t.string :username
t.string :firstname
t.string :lastname
t.string :organisation
...more of the same, all strings...
end
add_index :accounts, :username, unique: true
end
end
我正在使用 Rails 3.2 和 Ruby 2.1.5。
我找到了解决方案:
在控制器中我不得不改变
@account = Account.new(account_params)
到
@account = Account.new(params[:account])
Rails 3.2 不包含强参数。如果你想使用它们,你需要添加 gem 'strong_parameters' 到你的 Gemfile。
这个堆栈溢出答案讨论了必要的步骤。
Strong Parameters in Rails 3.2.8
当我尝试创建新记录时出现错误 no implicit conversion of Symbol into String
,我不明白这是因为所有数据都是由字符串组成的。
在我的控制器中:
def new
@account = Account.new
end
def create
@account = Account.new(account_params)
if @account.save
redirect_to(:action => 'index')
else
render('new')
end
end
private
def account_params
params.require(:account).permit(:username, :firstname, :lastname, :organisation, :phonenumber, :avatar, :about, :verified)
end
表格很简单:
<%= form_for(@account) do |f| %>
<div>
<%= f.label :username %><br>
<%= f.text_field :username %>
</div>
<div>
<%= f.label :firstname %><br>
<%= f.text_field :firstname %>
</div>
<div>
<%= f.label :lastname %><br>
<%= f.text_field :lastname %>
</div>
... more of the same...
<div class="actions">
<%= f.submit %>
</div>
<% end %>
以及迁移文件:
class CreateAccounts < ActiveRecord::Migration
def change
create_table :accounts do |t|
t.string :username
t.string :firstname
t.string :lastname
t.string :organisation
...more of the same, all strings...
end
add_index :accounts, :username, unique: true
end
end
我正在使用 Rails 3.2 和 Ruby 2.1.5。
我找到了解决方案: 在控制器中我不得不改变
@account = Account.new(account_params)
到
@account = Account.new(params[:account])
Rails 3.2 不包含强参数。如果你想使用它们,你需要添加 gem 'strong_parameters' 到你的 Gemfile。
这个堆栈溢出答案讨论了必要的步骤。
Strong Parameters in Rails 3.2.8