Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NoMethodError - undefined method inline_svg #85

Closed
JonaMX opened this issue Jun 7, 2018 · 4 comments
Closed

NoMethodError - undefined method inline_svg #85

JonaMX opened this issue Jun 7, 2018 · 4 comments

Comments

@JonaMX
Copy link

JonaMX commented Jun 7, 2018

I have been using the helper inline_svg on my erb views with no issues, I was using the version 0.6.1, I tried to upgrade the gem to the latest version which is 1.3.1 and now I'm having this issue.

NoMethodError - undefined method `inline_svg' for #<#<Class:0x00007ffbdd181f88>:0x00007ffbdcc0bec8>:
  app/assets/templates/authors-hub/assignment-work-item.html.erb:46:in `block in singleton class'
  app/assets/templates/authors-hub/assignment-work-item.html.erb:65530:in `singleton class'
  app/assets/templates/authors-hub/assignment-work-item.html.erb:65527:in `__tilt_70359753711160'
  app/views/home/index.html.erb:1:in `block in _app_views_home_index_html_erb___3952282048746299132_70359767600320'
  app/views/home/index.html.erb:1:in `_app_views_home_index_html_erb___3952282048746299132_70359767600320'
  app/controllers/home_controller.rb:7:in `index'

I'm using Rails 4.2.10

@jamesmartin
Copy link
Owner

@JonaMX thanks for opening this issue. Sorry you're having trouble with inline_svg.

I tried to reproduce the error using my inline_svg Test Rails App, which I upgraded to use inline_svg v1.3.1 and Rails 4.2.10 but everything seems to be working fine: SVGs are embedded into the view templates.

Do you have any custom configuration for the gem (/config/initializers/inline_svg.rb), if so would you mind pasting the contents of that file in this issue?

Could you also paste the code for your view template, where you call the inline_svg method?

@JonaMX
Copy link
Author

JonaMX commented Jun 7, 2018

Hey @jamesmartin thanks for your quick response.

I just realized that the issue is within the templates/views that I'm serving with angular-rails-templates. It seems that the Helpers are not being loaded.

Answering your questions, no I don't have any custom configuration, the only thing that I've added regarding InlineSvg is this configuration for the assets

Rails.application.config.assets.context_class.class_eval do
  include InlineSvg::ActionView::Helpers
end

and this is how I'm using the inlive_svg method

    <a class="print-link"
       id="print-link-{{model.id}}"
       target="_self"
       title="Print {{model.title}}"
       ng-href="{{model.url}}?print=true"
       ng-show="model.extension === 'online-doc'" >
      <%= inline_svg('hub_v2/icons/Print.svg', class: 'print-link-icon') %>
    </a>
  </div>

@JonaMX
Copy link
Author

JonaMX commented Jun 7, 2018

I'm closing this issue since this has to do with angular-rails-templates.

Turns out that the issue indeed was on tilt, it wasn't loading the helpers, so this is the code that I used as a workaround

module CustomERBEngine
  class ERBTemplate < Tilt::ERBTemplate
    def evaluate(scope, locals, &block)
      scope.class_eval do
        include Rails.application.routes.url_helpers
        include Rails.application.routes.mounted_helpers
        include ActionView::Helpers
        include InlineSvg::ActionView::Helpers
      end

      super
    end
  end
end

Tilt.register CustomERBEngine::ERBTemplate, 'erb'

Thanks anyway @jamesmartin

@JonaMX JonaMX closed this as completed Jun 7, 2018
@jamesmartin
Copy link
Owner

@JonaMX thanks for following up with a detailed description of the root cause and providing your workaround to help others that stumble on the same problem. 👍 ⚡️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants