【问题标题】:wrong number of arguments (0 for 1) Rails error参数数量错误(0 代表 1) Rails 错误
【发布时间】:2011-02-22 10:52:34
【问题描述】:

下面这个方法有错误

 def mymethod
    cat = Cat.find_by_cat_id_and_animal_id_and_name(catid, haustierid, cat_name)
    if cat.name.nil?
       if cat.name == "beauty"
           #doworkhere
        end
      end
 end

问题是,我有一个 cat 表,其中有一列名称。在猫的名字里面,有不同的行包含名字(“美”、“丑”等)。我试图基本上在 cat 表中循环,进入行并检查是否存在“美”,然后做一些事情。但是,它返回我输入了错误的参数。我无法理解错误的参数,这是在“猫名列”内循环的正确方法吗 感谢您的任何回答。

【问题讨论】:

  • 你写了“if cat.name.nil?”,但之后你还写了 cat.name == 'beauty'。 “如果 cat.name == '美女'”。我认为这个 if 语句永远不会运行,因为 cat.name 是 nil。

标签: ruby-on-rails


【解决方案1】:

我认为您的查找查询应该是:

cat = Cat.find_by_id_and_animal_id_and_name(catid, haustierid, cat_name)

而不是

cat = Cat.find_by_cat_id_and_animal_id_and_name(catid, haustierid, cat_name)

谢谢....

【讨论】:

    【解决方案2】:

    您的代码中有几个错误,但没有人可以解释您收到的错误消息。 您可能需要在if 中发布代码。

    同时,让我展示一些问题

    cat = Cat.find_by_cat_id_and_animal_id_and_name(catid, haustierid, cat_name)
    

    你可能是说

    cat = Cat.find_by_id_and_animal_id_and_name(catid, haustierid, cat_name)
    

    此外,您可能想要使用范围(或者如果您使用 Rails 2,则使用命名范围)

    if cat.name.nil?
       if cat.name == "beauty"
           #doworkhere
    

    我永远不会进入第二个if。名称不能同时为 nil 和 String。 另外,假设你想说!nil?您可以通过这样做以更简洁的方式编写它

    if !cat.name.nil? && cat.name == "beauty"
        #doworkhere
    

    或者干脆

    if cat.name == "beauty"
        #doworkhere
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 2011-11-08
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多