【发布时间】:2015-11-25 07:12:14
【问题描述】:
我正在努力在我的一个控制器中调用一个方法。 当我试图让我的控制器保持瘦身时,我想将一些代码移动到另一个地方。我选择了 ApplicationHelper,因为代码显然不属于我的模型之一。
这是我的应用程序助手:
module ApplicationHelper
def add_tag_to_vocab(vocab, tag)
user = User.find(vocab.user_id)
tag_handler = user.tags.where(name: tag).first
if tag_handler.nil?
tag_handler = user.tags.create(name: tag, active: true)
vocab.tags << tag_handler
else
vocab.tags << tag_handler
end
end
end
现在我想在控制器中使用这个方法。我尝试这样:
def import_vocabs
....
add_tag_to_vocab(new_vocab, @wordsearch.keyword)
...
...
respond_to do |format|
format.js { render file: "wordsearches/wordsearch_finish.js.erb"}
end
end
我明白了:
NoMethodError (undefined method `add_tag_to_vocab' for #<WordsearchesController:0x007f86d18cec40>):
我的问题是: 我如何从 ApplicationHelper 调用此方法,它不应该自动可用吗? 我试图在Rails Guides Controller Page 中找到答案,但没有。
取决于答案: 如果 ApplicationHelper 不是正确的位置,我会将这种方法放在哪里?
【问题讨论】:
标签: ruby-on-rails-4 controller helper