Frederick Cheung wrote in post #988949:
> On Mar 23, 8:52pm, John Merlino <li...@ruby-forum.com> wrote:
>>
>> params[:controller].singularize.constantize.responds_to(:viewable)
>
> Presumably this is the line throwing the error. If params[:controller]
> is users then you'll be calling
> constantize on the string user. Constants have to start with a capital
> letter, so constantize throws an error.
> As an aside, seing that much markup in a helper is off-putting(in the
> same way that too much logic in a template is awkward), if I were you
> i'd shift some of that into a partial
>
> Fred

Hey thanks you were right. Now it looks even more off putting:

 def table(collection, header_names, fields, class_name)
      return false unless collection.any?
      table_str = ""
  table_str += "<table id=\"" + class_name + "\" class=\"" + class_name 
+ "\">\n"
    table_str += "\t<thead>\n"
      table_str += "\t\t<tr>\n"
        header_names.each do |name|
          table_str += "\t\t\t<th>"
          table_str += name
          table_str += "</th>\n"
        end
        if 
params[:controller].singularize.capitalize.constantize.method_defined? 
:viewable
          table_str += "\t\t\t<th>"
          table_str += "View"
          table_str += "</th>\n"
        end

      table_str += "\t\t</tr>\n"
    table_str += "\t</thead>\n"
    table_str += "\t<tbody>\n"
      collection.each do |col|
        table_str += "\t\t<tr>\n"
          fields.each do |name|
            table_str += "\t\t\t<td>\n"
              table_str += col[name].to_s
            table_str += "\t\t\t</td>\n"
        end
        if 
params[:controller].singularize.capitalize.constantize.method_defined? 
:viewable
          table_str += "\t\t\t<td>\n"
            table_str += link_to 'View', :action => 'show', :id => 
col.id
          table_str += "\t\t\t</td>\n"
        end

        table_str += "\t\t</tr>\n"
      end
    table_str += "\t</tbody>\n"
  table_str += "</table>\n"
  table_str.html_safe
     end

It works but I dont like that I am checking whether a model has the 
method "viewable" just to display a link to a detail view in the table. 
Is there a better way to determine if the current controller's table 
should contain a view or not?

Thanks for response.

-- 
Posted via http://www.ruby-forum.com/.

-- 
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+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to