首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zombies Rails实验室4>练习3

Zombies Rails实验室4>练习3
EN

Stack Overflow用户
提问于 2011-03-07 12:23:41
回答 10查看 9.8K关注 0票数 17

在第三次演习中,我塞进了僵尸实验室的第四条铁轨。这是我的任务:创建将创建一个新僵尸的动作,然后重定向到创建的僵尸显示页面。我有以下params数组:

代码语言:javascript
复制
params = { :zombie => { :name => "Greg", :graveyard => "TBA" } }

我编写了以下代码作为解决方案:

代码语言:javascript
复制
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>

我知道我犯了一个错误,但我不知道在哪里。请帮帮我。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-03-07 12:33:17

代码语言:javascript
复制
def create
   @zombie = Zombie.create(params[:zombie])
   redirect_to @zombie
end
票数 25
EN

Stack Overflow用户

发布于 2011-03-07 12:36:43

首先你在这里犯了一个错误

代码语言:javascript
复制
@zombie.name = params[ :zombie [ :name ] ]   

它应该是

代码语言:javascript
复制
   @zombie.name = params[:zombie][:name] 

你可以试试

代码语言:javascript
复制
def create
   @zombie = Zombie.create(params[:zombie])
   redirect_to(create_zombie_path)
end

这使得您的代码按照wiki的方式使变成了

“不要重复自己”(DRY)意味着信息位于一个单一的、明确的位置。例如,使用Rails的ActiveRecord模块,开发人员不需要在类定义中指定数据库列名。相反,Rails可以根据类名从数据库中检索这些信息。

票数 4
EN

Stack Overflow用户

发布于 2011-03-07 12:44:37

我无法在您的代码中发现任何错误(除了[]之类的东西,但我认为它是在这里粘贴代码时出现的,因为它始终是统一的,当我尝试它时,我得到了另一个错误NoMethodError: undefined method '[]' for :zombie:Symbol),但是它肯定可以像这样折射:

代码语言:javascript
复制
def create
   @zombie = Zombie.new(params[:zombie])
   if @zombie.save
     redirect_to @zombie
   else
     render :action => :new
   end
end

使用params检查来自控制器的p params哈希是否完全相同。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5219691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档