Sijo Kg wrote:
> I have in the controller
I''m going to give your code a slightly aggressive review.
Firstly, I don''t know if our e-mail software took out your indentation,
but you
need to indent your blocks, with spaces (and never tabs). def and end should be
over 2, and the lines inside them should be over 4.
> def show_details
>
> @sd_ticket=ServiceDeskTicket.find(params[:id])
In a controller, only use @ if you actually need a variable to live longer than
the current method.
>
@sd_attachments=ServiceDeskAttachment.find_all_by_service_desk_ticket_id(params[:id])
Always put the correct amount of spaces around operators like =, for consistent
readability.
Next, don''t use shortcuts or acronyms for variable names. You
don''t need ''sd_''
as a "registered package prefix" for "show_details", because
your variables
should either be for everyone, or they should not use @.
Next, ServiceDeskTicket should use a ''has_many
:service_desk_attachments''
directive. Then instead of ''@sd_attachments = ...'', you can
just say
ticket.service_desk_attachments.
> @servicedesk_cis_join = @sd_ticket.service_desk_cis
> @sd_cis = @servicedesk_cis_join.map(&:ci)
> @sd_cis_association_type_ids >
@servicedesk_cis_join.map(&:service_desk_ci_association_type_id)
The same critique. All these associations should be declared inside the model,
using either directives like ''has_many'' or
''belongs_to'', or even simple methods
that return fully cooked data. Then the controller only needs to call the few
methods it needs.
And I suspect your type_id could go into a polymorphic Model, for even more
transparency. That''s the root principle of Object Oriented Programming,
so it''s
also frequently a good idea!
And write unit tests for everything, too!
> end
>
> And the view show_details contains many partial files in tabs for
> displayig each of the above like
>
> <li class="selected"><a href="#"
rel="view_sd_details">Details</a></li>
> <li><a href="#"
rel="view_sd_attachment_details">Attachments</a></li>
> <li><a href="#"
rel="view_sd_ci_details">CIs</a></li>
>
> <div id="view_sd_details" class="tabcontent">
> <%= render
:partial=>''service_desk_part/view_sd_details'' %>
> </div>
>
> <div id="view_sd_attachment_details"
class="tabcontent">
> <%= render :partial =>
''service_desk_part/view_sd_attachment_details'' %>
> </div>
>
> <div id="view_sd_ci_details" class="tabcontent">
> <%= render :partial =>
''service_desk_part/view_sd_ci_details'' %>
> </div>
Good! Partials tame RHTML!
> In _view_sd_attachment_details.rhtml a for loop there like following(I
> have included only a small portion of the code)
>
> <% for sd_attachment in @sd_attachments %> //sd_attachment contains
say
> 100items
> <td><%= sd_attachment.created_on %></td>
You might also try render :partial ... :collection.
> What i need is pagination for the above
> _view_sd_attachment_details.rhtml.And here view_sd_details is
> same in all pages like a header information..For example
>
> <tr>
> <th width=""><label for=""
>Description</label></th>
I thought tr/th should be inside a thead, right?
> <td width=""><%=h @sd_ticket.description
%></td>
> </tr>
>
> How can i do this with custom pagination..And if I use Ajax can I avoid
> show_details method executing information for view_sd_details again and
> again..And how can I do that....(The same thing to view_sd_ci_detils tab
> also)
Try this (roughly):
render :partial => ''header'',
:locals => {
:label => ''Attachments'',
:ticket => @sd_ticket,
:rows => proc{
render :partial => ''row'',
:collection => @sd_ticket.attachments }
}
Then inside _header.rhtml use something like...
<thead>
<tr><th><%= label %>...</th></tr>
</thead>
<tbody>
<%= rows.call %>
</tbody>
Now _header.rhtml is completely reusable, and you reuse it by writing that big
render... line again, and changing the values of :label and :rows.
BTW I don''t see no Ajax around here. Good thing, too, because simple
reports and
partials should all be raw HTML, right?
--
Phlip
http://www.oreillynet.com/ruby/blog/2008/03/beast_acts_as_sphinx.html
--~--~---------~--~----~------------~-------~--~----~
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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---