如何使控制器更加干燥-我想在控制器内使用辅助工具-Rails 3

| 这是我的控制器。因为控制器包含通过API推送HTML字符串的逻辑,并且HTML包含链接,所以挑战之一就是表示link_to帮助程序的输出:
 client = LinkedIn::Client.new(ENV[\'LINKEDIN_KEY\'], ENV[\'LINKEDIN_SECRET\'])
 57     client.authorize_from_access(current_user.atoken, current_user.asecret)
 58     public_profile_url = client.profile(:fields => \"public-profile-url\").public_profile_url
 59     string = \"<a href=\'#{public_profile_url}\'>#{current_user.full_name}</a> has shared: \"
 60     string = string + \"<a href = \'http://www.domain.com/question/#{@question.id}\'>#{@question.title}</a>\"
 61     #<a href=\'http://www.domain.com/review/#{@review.id}\'>#{@review.title}</a> \"
 62     debugger
 63     client.update_network(string)
这组代码是相同的,但是用于其他资源,因此我想将所有DRY作为单个内部模块用于控制器内部。 我尝试将其放入帮助程序中,但这根本不起作用:表示该帮助程序方法是未知的。     
已邀请:
我将HTML放入部分内容中,然后在控制器中使用ѭ1来呈现它并将其发送到LinkedIn。您也可以在控制器中包括相关的Helper模块,但这有点违反MVC原理,因此我建议您改用其他方法。 上面的答案等同于包括相关的Helper模块,但是,将视图和控制器分开是更好的选择。您的控制器应轻薄。控制器只是一个调度程序,它实际上并没有“做任何事情”,它只是传递事物来使事情发生。如果保持这种方式,则在动作和控制器之间共享功能非常容易。     
Railscast 132显示了如何在控制器内部使用辅助方法,例如link_to。     
如果我理解正确的话,就是说您在其他资源中反复使用相同(或相似)的代码块。 使用相同代码将其干燥的一种方法是在ApplicationController中为其创建一个方法(您实质上是在定义一个辅助方法,而在ApplicationController中对其进行定义。
class ApplicationController < ActionController::Base
  ...

  # The following line makes the method available in the views, too.
  helper_method :the_new_method 

protected
  def the_new_method(args)
     # Put your code here
  end
end
但是,就像其他人所说的那样,最好将其部分放置。     

要回复问题请先登录注册