1

Я хочу редактировать сущности URL из базы данных, добавляя для них. Как я могу использовать root_url или root_path в сериализаторе?Как использовать `root_url` в ActiveModel :: Serializer?

Что-то вроде этого:

class TrackSerializer < ActiveModel::Serializer 
    attributes :id, :title, :mp3, :ogg 
    has_one :promo_album 

    def mp3 
    root_url + object.mp3 
    end 

    def ogg 
    root_url + object.ogg 
    end 
end 

Но это не работает.

ответ

0

Я просто забыл определить root param в routes.rb. include Rails.application.routes.url_helpers помогает мне получить root_path в сериализаторе.

+1

Пожалуйста, отметьте ответ, чтобы помочь другим найти ответ при поиске и поиске вашего вопроса. – Leito

0

Проблема в том, что Rails.application.routes.url_helpers здесь не включен. Если заменить

root_url 

с

Rails.application.routes.url_helpers.root_url 

вы должны получить результаты, которые вы ищете.

+1

По данному вопросу нет никаких результатов. Только ошибки :( NoMethodError - undefined method 'root_url 'для # : app/serializers/track_serializer.rb: 6: in' mp3' active_model_serializers (0.10.0.rc3) lib/active_model/serializer. rb: 139: в блоке в атрибутах active_model_serializers (0.10.0.rc3) lib/active_model/serializer.rb: 137: in 'attributes ' –

+1

Спасибо, проблема решена –

+0

Рад слышать, что сработало, сможете ли вы принять ответ? – Lockyy

0

Rails 4: Я установил конфигурационную переменную в контроллер приложения.

class ApplicationController < ActionController::Base 
    before_action :set_root 

    protected 
    def set_root 
    Rails.application.config.root_url = root_url 
    end 

Что я получить доступ в моей модели, как это:

Rails.application.config.root_url 

Примечание: Это требует, чтобы у вас root настроен в routes.rb.