【问题标题】:Undefined method `destroy' for "Tech":String“技术”的未定义方法“销毁”:字符串
【发布时间】:2012-07-08 07:36:20
【问题描述】:

当我删除帖子时,我不断收到一条错误消息,提示

“Tech”的未定义方法 `destroy':String

帖子的“技术”部分因我要删除的帖子的标签而异。我不确定问题是什么。我正在使用acts_as_taggable_on,如果这与它有关的话。

这是我的帖子控制器中的销毁方法:

   def destroy
     @post = Post.find(params[:id])
     @post.destroy

     respond_to do |format|
       format.html { redirect_to(root_path) }
       format.xml  { head :ok }
       format.json { head :ok }
     end
   end

我帖子中的删除按钮显示:

  <%= button_to 'Delete', @post, :method => :delete, :confirm => "Are you sure?" %>

标签以字符串形式保存在数据库中。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 tags


    【解决方案1】:

    不可能给你答案来解决你的问题,因为你没有给出代码也没有给出例子。

    尽管如此,该错误意味着您正在对字符串调用 destroy 方法,而 Ruby 中的字符串没有定义 destroy 方法。

    检查您在哪里调用destroy,因为您似乎是在某个返回字符串(在您的情况下为标签名称)的函数中执行此操作。您必须在作为 Tag 类实例的对象上执行此操作。

    【讨论】:

    • 很抱歉我的问题最初并不具体在没有 gem 的其他应用程序中使用此代码并且没有问题。至于在作为实例的对象上调用destroy,您能否向我展示一个示例。我对编程还是比较陌生,所以我很感激帮助。谢谢。
    • 当然,如果你有一个这样的对象:tag = Tag.new,那么你可以调用它的方法,例如:tag.getName,在这种情况下它可以返回标签的名称,这是一个字符串。因此,如果您执行以下操作: tag.getName.destroy 您将尝试销毁返回的字符串,而不是标签本身。所以你必须确保销毁对象:tag.destroy
    猜你喜欢
    • 2013-08-23
    • 2014-05-27
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 2014-06-11
    • 2014-06-01
    相关资源
    最近更新 更多