Forum: Ruby on Rails help with partial

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Jose vicente R. (Guest)
on 2008-11-20 01:24

First and foremost sorry if my english is not the best.

In my application I have a view with tickets and i can select it one to
one with a button.
The selected tickets go to another view that shows me the tickets i have
choosen. I want to export this selected tickets to excell.

My code is the next:
---------
routes.rb
----------
map.resources :tickets,  :collection => { :exportar=>:get,
            :auto_complete_for_ticket_province => :get,
           :auto_complete_for_ticket_city => :get,
           :auto_complete_for_ticket_zip => :get,
           :auto_complete_for_ticket_adquired_in => :get  }

----------------
tickets_controller
------------------
def add_to_cartticket
   #Add the selected ticket to cartticket, works fine

 end

def find_cartticket
#creates a new cartticket if whe iniciates the session, works fine
  end

def vaciar_cartticket
#deletes all the tickets added to carticket in the current session,
works fine
end

def expotar  #THIS METTOD SHOULD SELECT ALL THE CURRENT TICKETS IN
CARTICKET, i think works wroung
    @cartticket.items= Cartticket.items
    headers['Contenet-type']="aplication/vnd.ms-excel"
  headers['Contenet-Disposition']='attachment; filename="report.xls"'
      headers['Cache-Control']=''
end


------------------------------
add_to_cartticket.html.erb
-------------------------------
h2>Tickets seleccionados </h2>
<ul>
<% for item in @cartticket.items %>
<li><%=h item.id %></li>
<% end %>
</ul>
<br/>
<%= button_to "Vaciar" , :action => :vaciar_cartticket %>
<br/>

<%= link_to 'Exportar a Excel', exportar_tickets_url %> # MUST SHOW THE
SELECTED TICKETS ON .XLS COMPATIBLE



------------------------
exportar.html.erb
------------------------
<table border="1" id="doc">
  <tr>
    <td>hola</td>

    <td>adios</td>

    <td>dew</td>
  </tr>
  <%=render :partial=> "item", :collection=>@cartticket.items %>
  </table>
----------------------------------
exportar.html.erb
----------------------------------
<tr>
  <td> <%=item.user_id%> </td>
  <td> <%=item.contact%> </td>
  <td> <%=item.phone%> </td>

</tr>
----------------------------------
++++++++++++++++++++++++++++++++++

whe i try to link to "Exportar a Excel" Firefox shows me this error:

NoMethodError in Tickets#exportar

Showing tickets/exportar.html.erb where line #9 raised:

You have a nil object when you didn't expect it!
The error occurred while evaluating nil.items

Extracted source (around line #9):

6:
7:     <td>dew</td>
8:   </tr>
9:   <%=render :partial=> "item", :collection=>@cartticket.items %>
10:   </table>


**********************************************

Could somebody help me to find the error(s).....Thanks a lot
Frederick C. (Guest)
on 2008-11-20 01:43
(Received via mailing list)
On Nov 19, 11:24 pm, Jose vicente Ribera pellicer <rails-mailing-
removed_email_address@domain.invalid> wrote:

>
> Showing tickets/exportar.html.erb where line #9 raised:
>
> You have a nil object when you didn't expect it!
> The error occurred while evaluating nil.items

You don't seem to be setting @cartticket anywhere.

Fred
Jose vicente R. (Guest)
on 2008-11-20 17:37
Frederick C. wrote:
> On Nov 19, 11:24�pm, Jose vicente Ribera pellicer <rails-mailing-
> removed_email_address@domain.invalid> wrote:
>
>>
>> Showing tickets/exportar.html.erb where line #9 raised:
>>
>> You have a nil object when you didn't expect it!
>> The error occurred while evaluating nil.items
>
> You don't seem to be setting @cartticket anywhere.
>
> Fred

I dont`t think so, because in ticket controller this code works fine:

 def add_to_cartticket
   @cartticket = find_cartticket
    ticket = Ticket.find(params[:id])
    @cartticket.add_ticket(ticket)

  end

  def find_cartticket
    unless session[:cartticket] # if there's no cart in the session
    session[:cartticket] = Cartticket.new # add a new one
    end
    session[:cartticket] # return existing or new cart
  end


 thanks for the answer. Now i'm not implementing this code, only appears
in the add_to_cartticket view one table with the fields i want to show.
Next step if I can`t sole tehe excel problem will be print it directly.
Frederick C. (Guest)
on 2008-11-20 18:32
(Received via mailing list)
On 20 Nov 2008, at 15:37, Jose vicente Ribera pellicer wrote:

>>
>
>  end
>
That's irrelevant. when your expotar action is called you get a new
instance of the Controller - instance variables don't persist across
requests.

Fred
Jose vicente R. (Guest)
on 2008-11-20 20:10
Frederick C. wrote:
> On 20 Nov 2008, at 15:37, Jose vicente Ribera pellicer wrote:
>
>>>
>>
>>  end
>>
> That's irrelevant. when your expotar action is called you get a new
> instance of the Controller - instance variables don't persist across
> requests.
>
> Fred

So I will find @cartticket before select the items really?
Frederick C. (Guest)
on 2008-11-20 20:22
(Received via mailing list)
On 20 Nov 2008, at 18:10, Jose vicente Ribera pellicer wrote:

>> requests.
>>
>> Fred
>
> So I will find @cartticket before select the items really?
Sorry, I can't parse that sentence.

Fred
Jose vicente R. (Guest)
on 2008-11-20 20:59
Sorry. I think this is the solution that you're trying to show me:

def expotar  #THIS METTOD SHOULD SELECT ALL THE CURRENT TICKETS IN
CARTICKET, i think works wroung

    @cartticket = find_cartticket
    @tickets=@cartticket.items

    headers['Contenet-type']="aplication/vnd.ms-excel"
  headers['Contenet-Disposition']='attachment; filename="report.xls"'
      headers['Cache-Control']=''
end

@tickets has the tickets that y need.

I think you were trying to say this
Frederick C. (Guest)
on 2008-11-21 13:05
(Received via mailing list)
On 20 Nov 2008, at 18:59, Jose vicente Ribera pellicer wrote:

>  headers['Contenet-Disposition']='attachment; filename="report.xls"'
>      headers['Cache-Control']=''
> end
>
> @tickets has the tickets that y need.
>
> I think you were trying to say this

that looks fine to me (ps send_data/send_file might help you reduce
typos in those headers)

Fred
Jose vicente R. (Guest)
on 2008-11-21 18:35
thanks a lot!!
This topic is locked and can not be replied to.