ApplicationController vs Helpers

Can anybody please explain to me, what kind of methods, except
before_filters, are appropriate for ApplicationController, and why not
to put them into some helper?

I have read an interesting blog post about helpers
http://railspikes.com/2008/8/22/how-to-fix-your-rails-helpers
where it is explained that the ApplicationHelper is not a good place to
keep the code, but what about ApplicationController?

Alexey.

It's not a hard-and-fast rule, but I've always heard that anything that generates HTML belongs in a helper, and anything that marshalls model instances belongs in a controller.

Walter

Thanks, but what about, say rendering xml with a template?
Or, a better question, is there an example of a method that should go
into ApplicationController and not into a specific controller or a
helper?

Alexey.

Thanks, but what about, say rendering xml with a template?

Controller, in a respond_to block.

Or, a better question, is there an example of a method that should go
into ApplicationController and not into a specific controller or a
helper?

Authentication?

Walter

Walter Davis wrote in post #1019090:

Thanks, but what about, say rendering xml with a template?

Controller, in a respond_to block.

What if this is a big repeating block of code?

Or, a better question, is there an example of a method that should go
into ApplicationController and not into a specific controller or a
helper?

Authentication?

I use SessionsController and SessionsHelper for this.

Is ApplicationController a good place for anything other than
before_filter's?

Alexey.

Walter Davis wrote in post #1019090:

Thanks, but what about, say rendering xml with a template?

Controller, in a respond_to block.

What if this is a big repeating block of code?

I am not sure what you mean here. Are you talking about a template actually being in your controller? Can you show an example (maybe cut down) to show what you mean by a big repeating block?

Or, a better question, is there an example of a method that should go
into ApplicationController and not into a specific controller or a
helper?

Authentication?

I use SessionsController and SessionsHelper for this.

Is ApplicationController a good place for anything other than
before_filter's?

Looking at a couple projects I have open, mine are largely empty, with a single method rescue_from_CanCan::AccessDenied and in one a method called current_practice_id that just looks up the Devise current_user and extracts that user's practice id. Not much else going on here in that file. I'm sure there are other great reasons to use it.

Walter

Walter Davis wrote in post #1019206:

What if this is a big repeating block of code?

I am not sure what you mean here. Are you talking about a template
actually being in your controller? Can you show an example (maybe cut
down) to show what you mean by a big repeating block?

    def render_ms_excel_2003_xml_for_download(scoped_collection,
                                              attributes,
                                              column_headers,
                                              filename=nil)
      klass = scoped_collection.klass
      if klass.superclass == AbstractSmarterModel
        column_types = klass.attribute_db_types
      else
        column_types = {}
        attributes.each do |attr|
          column_types[attr] = klass.columns_hash[attr.to_s].type
        end
      end
      filename ||= "#{klass.model_name.human.pluralize}"\
                   " #{Time.now.in_time_zone.strftime('%Y-%m-%d
%k_%M')}"\
                   ".excel2003.xml"
      send_data render_to_string(
          :template => 'shared/index',
          :locals =>
              { :models => scoped_collection,
                :attributes => attributes,
                :column_types => column_types,
                :column_headers => column_headers}),
          :filename => filename,
          :content_type => "#{Mime::MS_EXCEL_2003_XML.to_s}; "\
                          "charset=utf-8",
          :disposition => 'inline'
    end

I use `render` together with `send_data` here only because i've found no
way to specify the default file name with `render`.

Is ApplicationController a good place for anything other than
before_filter's?

Looking at a couple projects I have open, mine are largely empty, with
a single method rescue_from_CanCan::AccessDenied and in one a method
called current_practice_id that just looks up the Devise current_user
and extracts that user's practice id. Not much else going on here in
that file. I'm sure there are other great reasons to use it.

Thanks for an opinion.

Alexey.