Friday, May 11, 2012

[Rails] Re: How to "intercept" each action call?

I understand. See the link I posted, where the OP does exactly your requirement. Here's some code:

class ApplicationController < ActionController::Base
  include MyGem
end

class TasksController < ApplicationController
  before_filter :find_task

   def find_task
      @task = Task.find(params[:id])
      # Some other operation involving MyGem if you need...
   end

  def show
    respond_with(@task)
  end
end


Dheeraj Kumar

On Saturday 12 May 2012 at 6:37 AM, Lauro Caetano wrote:

I'm trying to do this:

class ApplicationController < ActionController::Base
  include MyGem
end

class TasksController < ApplicationController
  injector_to :task

  def show
    respond_with(@task)
  end
end

When the action 'show' is called, the "injector_to" should inject the @task for me. 
In other words, injector_to makes "Task.find(params[id])" for me in this case.

Other example: If I have this action ->

def create
  respond_with(@task)
end

the injector_to should do the hard work, instantiating the @task and saving it.

I think that I've explained better now.

2012/5/11 Jeremy Walker <jez.walker@gmail.com>


On 12 May 2012 01:48, Lauro Caetano <laurocaetano1@gmail.com> wrote:
Thanks for your help Dheeraj, but I'm trying to do something like Responders.

Responders has a respond_to :html in controllers, that is used in each action call to respond_with.

The thing is: call a specific method that is located inside my gem for every action call. This method should be able to modify the attribute that was passed.

I have no idea to make this work.

Can you give an example of this working, please? I don't understand what you mean by "the attribute that was passed". What modifications is it going to make?
 


2012/5/11 Dheeraj Kumar <a.dheeraj.kumar@gmail.com>


Dheeraj Kumar

On Saturday 12 May 2012 at 5:53 AM, Lauro Caetano wrote:

Hi! 

I'm a RoR beginner and I'm trying to make a gem that can "intercepts" all action from my controllers.

I would like to do something like that:

class ApplicationController < ActionController::Base
  include MyGem
end

class MyController < ApplicationController
  do_something_to :some_attribute

  def index
    respond_with(@some_attribute)
  end
end

In each call of index or other action from MyController, I want that MyGem execute "do_something_to" modifying the value of "some_attribute". Is it possible?

Thanks,
Lauro Caetano

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate