2016-12-01 7 views
0
Rails 3.2 

Das ist mein Controller/lead_billing/lead_billings_controller.rb:Umleiten Ausgang zu einem anderen Modell

In controllers/admin/lead_billings_controller.rb, ich habe:

def create 
    @lead_billing = LeadBilling.new(params[:lead_billing]) 
    @lead_billing.generate_model_id 
    @lead_billing.add_ticket_id_to_model(ticket_id) 
    @ticket = Ticket.find(params[:ticket_id]) 
    respond_to do |format| 
     if @lead_billing.save 
     format.html { redirect_to @ticket, notice: 'Lead billing was successfully created.' } 
     format.json { render json: @lead_billing, status: :created, location: @lead_billing } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @lead_billing.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

Was ich will do, wird dann die lead_billing gespeichert, um wieder auf die show-Methode des Ticket-Controllers zu verweisen.

Wenn ich es laufen lasse, erhalte ich die folgende Fehlermeldung:

undefined method `ticket_url' for #<Admin::LeadBillingsController:0x0000000898c990> 

Routen zu Tickets bezogen werden:

tickets GET /tickets/:id(.:format) statics#tickets 
update_state_admin_ticket PUT /admin/tickets/:id/update_state(.:format) admin/tickets#update_state 
toggle_flag_admin_ticket PUT /admin/tickets/:id/toggle_flag(.:format) admin/tickets#toggle_flag 
edit_notes_admin_ticket GET /admin/tickets/:id/edit_notes(.:format) admin/tickets#edit_notes 
download_work_order_admin_ticket GET /admin/tickets/:id/download_work_order(.:format) admin/tickets#download_work_order 
fancybox_show_admin_ticket GET /admin/tickets/:id/fancybox_show(.:format) admin/tickets#fancybox_show 
to_step_admin_tickets GET /admin/tickets/to_step(.:format) admin/tickets#to_step 
creator_admin_tickets GET /admin/tickets/creator(.:format) admin/tickets#creator 
admin_tickets GET /admin/tickets(.:format) admin/tickets#index 
POST /admin/tickets(.:format) admin/tickets#create 
new_admin_ticket GET /admin/tickets/new(.:format) admin/tickets#new 
admin_ticket GET /admin/tickets/:id(.:format) admin/tickets#show 
PUT /admin/tickets/:id(.:format) admin/tickets#update 
DELETE /admin/tickets/:id(.:format) admin/tickets#destroy 

Statt mir das Ticket zu zeigen. Irgendwelche Ideen?

+0

Können Sie zeigen, welche Routen "Rake-Routen" ergeben? – archana

+0

Das sind viele Routen. Ich werde die ticketbezogenen Routen posten. Laut den Rails-Dokumenten soll das Modell den Schienen nicht mitteilen, wie sie mit dem Routing umgehen sollen. Ich weiß, dass die Show-Ticket-Methode bereits funktioniert. Ich werde die Routen an die Frage anhängen. – EastsideDeveloper

+0

Sie können nur für ticketbezogene Routen "grep". – archana

Antwort

1

Ihre Route lautet admin_ticket. Versuchen Sie redirect_to admin_ticket_path(@ticket).

+0

Ich werde es versuchen, aber ich dachte, dass die Rails docs sind explizit auf diese: solange @ticket gültig ist, und ich habe keinen Fehlercode auf das ist schlau genug, um Rails mitzuteilen, wie man es routet. – EastsideDeveloper

+0

Ja, aber Ihre Route hat 'admin', aber Ihre '@ ticket'-Klasse hat keinen Admin. – archana

+0

Es hat funktioniert. Ich denke, das ist ein Nebeneffekt von @ticket, aus dem lead_billings Controller erstellt, obwohl der lead_billings Controller ein Admin-Klasse-Controller ist. Ich frage mich, ob es eine Möglichkeit gibt, ein Admin-Klassenticket zu erstellen. – EastsideDeveloper

0

haben nicht so gemacht, warum nicht so erklären?

redirect_to ticket_path(@ticket) 
+0

Ich werde es versuchen, aber die Rails Dokumente sagen, dass dies nicht benötigt wird. Alles, was Sie tun müssen, ist umleiten zu @ticket und es sollte verstehen, – EastsideDeveloper

Verwandte Themen