I have the following before_filter:
def find_current_membership
respond_to do |wants|
wants.html { @current_membership = @group.memberships.for(@current_user) }
wants.rss {}
wants.js { @current_membership = @group.memberships.for(@current_user) }
end
end
I would like to share the code for the HTML and JS blocks. Is there a better way than just throwing the code into a method? I was hoping this would work:
def find_current_membership
respond_to do |wants|
wants.rss {}
wants.all { @current_membership = @group.memberships.for(@current_user) }
end
end
But alas, it did not.
-
In this case you could probably do something like:
before_filter :only => :find_current_membership do |c| load_current_membership if not request.format.rss? endAlternatively you could use the request.format.rss? in your controller method to conditionally load the memberships.
Either way your first step should be to refactor that into a method.
From jonnii -
If I'm reading this right, it looks like
find_current_membershipis yourbefore_filtermethod, is that right? eg:class SomeController < ApplicationController before_filter :find_current_membership ...I think it's a bit non-standard to use
respond_toinside abefore_filter, they are meant to just do something and render on failure. It seems to me like you want something more like thisclass SomeController < ApplicationController before_filter :find_current_membership def some_action # stuff, or maybe nothing end private def find_current_membership @current_membership = @group.memberships.for(@current_user) unless request.format.rss? end endFrom Cameron Booth -
How about this simple solution!?
def find_current_membership @current_membership = @group.memberships.for(@current_user) respond_to do |wants| wants.html wants.rss {} wants.js end endFrom allesklar
0 comments:
Post a Comment