Frederick Cheung wrote in post #988949:
> On Mar 23, 8:52pm, John Merlino <[email protected]> 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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.