在第三次演习中,我塞进了僵尸实验室的第四条铁轨。这是我的任务:创建将创建一个新僵尸的动作,然后重定向到创建的僵尸显示页面。我有以下params数组:
params = { :zombie => { :name => "Greg", :graveyard => "TBA" } }我编写了以下代码作为解决方案:
def create
@zombie = Zombie.create
@zombie.name = params[ :zombie [ :name ] ]
@zombie.graveyard = params[ :zombie [ :graveyard ] ]
@zombie.save
redirect_to(create_zombie_path)
end但是,当我提交它时,我得到了以下错误:
#<TypeError: can't convert Symbol into Integer>
我知道我犯了一个错误,但我不知道在哪里。请帮帮我。
发布于 2011-03-07 12:33:17
def create
@zombie = Zombie.create(params[:zombie])
redirect_to @zombie
end发布于 2011-03-07 12:36:43
首先你在这里犯了一个错误
@zombie.name = params[ :zombie [ :name ] ] 它应该是
@zombie.name = params[:zombie][:name] 你可以试试
def create
@zombie = Zombie.create(params[:zombie])
redirect_to(create_zombie_path)
end这使得您的代码按照wiki的方式使变成了。
“不要重复自己”(DRY)意味着信息位于一个单一的、明确的位置。例如,使用Rails的ActiveRecord模块,开发人员不需要在类定义中指定数据库列名。相反,Rails可以根据类名从数据库中检索这些信息。
发布于 2011-03-07 12:44:37
我无法在您的代码中发现任何错误(除了[、]之类的东西,但我认为它是在这里粘贴代码时出现的,因为它始终是统一的,当我尝试它时,我得到了另一个错误NoMethodError: undefined method '[]' for :zombie:Symbol),但是它肯定可以像这样折射:
def create
@zombie = Zombie.new(params[:zombie])
if @zombie.save
redirect_to @zombie
else
render :action => :new
end
end使用params检查来自控制器的p params哈希是否完全相同。
https://stackoverflow.com/questions/5219691
复制相似问题