ruby-on-rails - Rails 元标记,Rails 4 中未定义的方法 `set_meta_tags'

标签 ruby-on-rails ruby ruby-on-rails-4 meta-tags

使用 gem Meta Tags

documentation声明将其放入 Controller 中:

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'

最佳答案

我通常将它放在应用程序 Controller 中以保持 View 整洁。

# 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 中(因此 view_context 是必需的)。

并且记得安装 gem 后重新启动服务器! (它可能太明显以至于你忘记了它)

关于ruby-on-rails - Rails 元标记,Rails 4 中未定义的方法 `set_meta_tags',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31658330/

相关文章:

ruby-on-rails - 仅验证数字

heroku - 将 CORS 与 Rails 4 和 heroku 结合使用

ruby-on-rails - Rails 根据 Rails 环境定义 root url

ruby-on-rails - Ubuntu 11.04 自动测试 + ZenTest + libnotify 不起作用

ruby - 将嵌套哈希数组减少为键/值对的扁平数组

ruby - Rails form_tag 需要刷新

ruby-on-rails-3 - 正确的 Github 应用程序 URL

ruby-on-rails - Rails ActiveRecord 协会

ruby-on-rails - ActiveRecord::Migrator.up() 的 Rails 5.2 替代方案

ruby-on-rails - 在 Ruby on Rails 中将 YYYYDDMM_rest_of_filename.xls 更改为 YYYYMMDD_rest_of_filename.xls