Как мне получить значение переменной экземпляра из метода контроллера, когда она вызывается внутри частичного представления в rails

#ruby-on-rails-4

#ruby-on-rails-4

Вопрос:

Я очень новичок в rails, и я пытаюсь получить URL-адрес изображения с помощью Graph API внутри частичного представления с помощью метода контроллера. Как я могу вернуть URL-адрес изображения, хранящийся в переменной экземпляра, из метода контроллера в то место, где я его вызвал.

Например: у меня есть частичный «_fb_comments.erb», и я пытаюсь вызвать метод контроллера «fb_comments» в моем «SocialMediaController» из «_fb_comments.erb», частичный, как это ->

 <img src=<%= social_media_fb_comments_path(:comm_usr_id => "#{comm['from'['id']}" %> />
 

И у меня есть мой метод контроллера «fb_comments» внутри «SocialMediaController», определенный следующим образом ->

 def fb_comments
user=User.find_by_id(session[:uid])
@comm_user=params[:comm_usr_id]
@get_url=Koala::Facebook::API.new(user.token)
@image_url=@get_url.get_picture(@comm_user)
render :text => @image_url
 

С этим методом контроллера не связано представление. Скажите мне, если я чего-то не хватает, и как я могу получить это значение @image_url для моего <img src= /> тега в моем частичном представлении. Пожалуйста, помогите мне с кодом, поскольку я совершенно новичок в rails.

Ответ №1:

Вам не нужно действие контроллера, вам нужен помощник представления. Вы можете поместить метод application_controller и добавить строку helper_method :fb_comments' at the top of application_controller`.

 class ApplicationController << ActionController::Base
  helper_method :fb_comments

  def fb_comments(options)
    user=User.find_by_id(session[:uid])
    comm_user=options[:comm_usr_id]
    get_url=Koala::Facebook::API.new(user.token)
    get_url.get_picture(comm_user)
  end
 

Затем вызовите его с помощью…

 <img src=<%= fb_comments(comm_usr_id: "#{comm['from'['id']}" %> />