2015-07-27 2 views
3

Используя камень Meta TagsРельсы мета-теги, неопределенный метод `set_meta_tags' в Rails 4

The documentation государство поставить это в контроллере:

set_meta_tags :title => 'Member Login', 
       :description => 'Member login page.', 
       :keywords => 'Site, Login, Members' 

Но, вот что я сделал, не уверен, Мне нужно что-то обернутый вокруг него:

class ApplicationController < ActionController::Base 
    rescue_from CanCan::AccessDenied do |exception| 
    redirect_to main_app.root_path, :alert => exception.message 
    end 
    protect_from_forgery with: :null_session 
    before_filter :configure_devise_params, if: :devise_controller? 

    set_meta_tags :og => { 
        :title => 'The Rock', 
        :type  => 'video.movie', 
        :url  => 'http://www.imdb.com/title/tt0117500/', 
        :image => 'http://ia.media-imdb.com/rock.jpg', 
        :video => { 
         :director => 'http://www.imdb.com/name/nm0000881/', 
         :writer => ['http://www.imdb.com/name/nm0918711/', 'http://www.imdb.com/name/nm0177018/'] 
        } 
        } 
end 

Тогда на мой взгляд:

<%= display_meta_tags %> 

Но я получаю ошибку undefined method 'set_meta_tags'

+0

Если вы используете это из контроллера, то по крайней мере определите его в 'action', вы никогда не получите что-то без метода. Или же использовать их во взглядах. – Deep

+0

@Deep Hello! Поэтому давайте скажем, что я хочу, чтобы этот метатег использовался на всех страницах, мы просто включили его в действие, но это не сработает, если мы назовем это действие правильным? Как я могу назвать это действие? Я думаю, что есть метод раньше? но я не уверен, что это такое ... или, может быть, я думаю об этом неправильно? Возможно, поместите его в 'before_filter: some_action'? – hellomello

+0

@Deep Просто попробовал 'before_filter', но получил ошибку:' уровень стека слишком глубокий' – hellomello

ответ

-1

Я обычно помещают его в контроллер приложения, чтобы сохранить вид опрятный.

# app/config/application.rb 

# ... 

before_action :please_set_meta_tags 

def please_set_meta_tags 
    set_meta_tags title:  'website name', 
       description: 'website description', 
       og: { 
        title:  'website name', 
        type:  'website', 
        url:  request.original_url, 
        image:  { _: view_context.image_url('myimage1.jpg'), width: 1200, height: 630 }, 
          { _: view_context.image_url('myimage2.jpg'), width: 1200, height: 630 } 
       } 
end 
# ... 
# app/views/layouts/application.html.erb 

... 
<head> 
    <%= display_meta_tags %> 
    ... 

Я использую view_context.image_url() вместо image_url(), чтобы получить изображение, так как я не в представлении (поэтому view_context требуется).

И помните, что перезапустил сервер после установки драгоценного камня! (это может быть так очевидно, что вы его забудете)

+0

Перезагрузка решила его для меня. Тем не менее, я чувствую себя глупо. – rndstr

Смежные вопросы