1

我的主页有一个帮助模块,其中有两种方法可以做同样的事情:

module HomeHelper
    def parsed_text(tweet)
        auto_link (tweet).gsub(/(@\w+)/, %Q{<a href="http://twitter.com/\\1">\\1</a>})
    end
    def other_parsed_text
        self.auto_link.gsub(/(@\w+)/, %Q{<a href="http://twitter.com/\\1">\\1</a>})
    end
end

在我看来,这有效:

<%= parsed_text(tweet.text) %>

但这不会:

<%= tweet.text.other_parsed_text %>

我得到一个NoMethodError at / undefined method other_parsed_text. 方法的调用者不是self在我的辅助方法中吗?

我究竟做错了什么?我希望第二种使用符号调用方法的.方式也可以工作。我怎么做?

4

1 回答 1

2

这不起作用,因为您没有扩展属于的类tweet.text。如果你想扩展一些类,你可以使用ActiveSupport::Concern 。您现在正在做的是提供一些可以使用参数调用的方法。

// 我在这里发布了一个例子:https ://stackoverflow.com/a/8504448/1001324

于 2013-07-27T10:57:43.457 回答