Ruby On Rails - Using concerns in controllers
Asked Answered
D

1

13

Possible Noob Warning: New to RoR

I am trying to use concerns in RoR. Right now I just have a very simple concern writen

#./app/controllers/concerns/foo.rb
module Foo
  extend ActiveSupport::Concern

  def somethingfoo
    puts "Ayyyy! Foo"
  end
end

When I try and use this concern in my controller I get a undefined method error

#./app/controllers/foo_controller.rb
class FooController < ApplicationController

  include Foo

  def show
    Foo.somethingfoo # undefined method 'somethingfoo' for Foo:Module
    render plain: "Ohh no, It doesnt even show me because of the error above me"
  end
end

To my knowledge somethingfoo should be called but it is not. I have also tried defining somethingfoo in a included do ... end block in the concern but this does not work either.


Is there something I am missing? Can concerns not be used like this with controllers?

Departed answered 24/6, 2014 at 19:9 Comment(1)
Why are you trying to call anything on Foo? https://mcmap.net/q/63870/-how-to-use-concerns-in-rails-4, blog.andywaite.com/2012/12/23/exploring-concerns-for-rails-4, etc.Jamieson
Y
22

If you include modules (extended by ActiveSupport::Concern or not), the methods of that module become instance methods of the including class/module.

Your Controller method should hence read

def show
  somethingfoo
  render plain: "Yeah, I'm shown!"
end
Yoshi answered 24/6, 2014 at 19:17 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.