我遇到了一些麻烦,想知道如何为每个用户帖子创建一个url(在我的应用程序中称为supportposts)并将其传递给after_commit方法。现在我可以传递支持信息的属性,例如标题和内容,它们分享给twitter:
after_commit :share_all
def share_all
if user.authentications.where(:provider => 'twitter').any?
user.twitter_share(title, content)
end
end
def twitter_share(title, content)
twitter.update("#{title}, #{content}") #<--- this goes to twitter feed
end
现在我真正想要做的是将支持信息的URL分享到Twitter提要中。我正试图在模型之外访问url helper,但是它弄乱了我的路线并且我得到了RoutingError(没有路由匹配{:action =&gt;“destroy”,:controller =&gt;“supportposts”})
after_commit :share_all
Rails.application.routes.url_helpers.supportpost_url(@supportpost, :host => 'examplehost.com')
def share_all
if user.authentications.where(:provider => 'twitter').any?
user.twitter_share(supportpost_url)
end
end
我在这里做错了什么?如何将URL正确传递到twitter_share?
这里是我的路线和suppostpost控制器/型号http://pastie.org/1799492
答案 0 :(得分:0)
def share_all
if user.authentications.where(:provider => 'twitter').any?
supportpost_url = Rails.application.routes.url_helpers.url_for :action => :show, :controller => 'supportposts', :id => self, :host => 'example.com'
user.twitter_share(supportpost_url)
end
end
Rails.application.routes.url_helpers.supportpost_url(@supportpost, :host => 'examplehost.com')
你拥有它不会有任何好处。哦,顺便说一下,我在这个例子中使用了url_for()
,但你也可以像上面的问题一样使用supportpost_url()
。这里的主要内容是你调用方法的地方。
我希望这会有所帮助。