Rails: как передать URL поста в методе after_commit - PullRequest
0 голосов
/ 16 апреля 2011

У меня возникают некоторые реальные проблемы с выяснением того, как создать URL для каждого пользовательского поста (в моем приложении это называется supportposts) и передать его методу after_commit.Прямо сейчас я могу передать атрибуты поста поддержки, такие как заголовок и контент, который предоставляется в твиттер:

supportpost.rb

after_commit :share_all

def share_all
 if user.authentications.where(:provider => 'twitter').any?
 user.twitter_share(title, content)
 end
end

user.rb

def twitter_share(title, content) 
  twitter.update("#{title}, #{content}")           #<--- this goes to twitter feed 
end

Теперь я действительно хочу поделиться URL-адресом supportpost в твиттере.Я пытаюсь получить доступ к помощникам URL за пределами модели, как это, но это портит мои маршруты, и я получаю RoutingError (Нет совпадений с маршрутом {: action => "destroy",: controller => "supportposts"})

supportpost.rb

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?

Здесь мой маршрут и суппост пост контроллера / модель http://pastie.org/1799492

1 Ответ

0 голосов
/ 17 апреля 2011
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(), как вы делали в вопросе выше.Главное здесь, где вы вызываете метод.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...