2012-02-03 1 views
1

Так у меня есть отношения, где сервис has_many статусовРубин на Rails - маршрутизация ошибки при использовании вложенных ресурсов с формой помощником

У меня есть это в моем routes.rb файле

resources :services do 
    resources :statuses 
end 

и это мой statuses_controller файл

class StatusesController < ApplicationController 
    def new 
    @status = Status.new(:parent_id => params[:parent_id]) 
    end 

    def create 
    @service = current_user.services.find(params[:id]) 
    @status = Status.new(params[:status]) 
    if @status.save 
     flash[:notice] = "New status created." 
    else 
     flash[:error] = "Error creating new status." 
    end 
    redirect_to service_statuses_path 
    end 
end 

и я получаю сообщение об ошибке:

undefined method `statuses_path' for #<#<Class:0x000001045dbb28>:0x00000104554e48> 

при попытке нагрузки:

http://localhost:3000/services/2/statuses/new 

с просмотра файлов/статусов/new.html.erb

<%= form_for [@service, @status], :path =>service_statuses_path do |f|%> 
    <%= f.label :status %> 
    <%= f.text_field :state %><br /> 

    <%= f.submit %> 
<% end %> 

Почему это дает мне неопределенный метод `statuses_path» еще ?

+0

вы можете запустить «реки маршруты» в командной строке и вставить то, что показывает там? – PhillipKregg

ответ

0

Не уверен, что это является причиной ошибки. Но вы должны изменить вызов метода

service_statuses_path 

в

service_statuses_path(@service, @status) 

, который будет генерировать путь, как показано ниже.

/услуги/service_id/Статусы/status_id

+0

теперь получаю это: нет совпадений маршрутов {: controller => "statuses",: service_id => nil,: format => # } –

+0

вам не нужен: путь здесь. Просто используйте <% = form_for [@service, @status] do | f |%> –

+0

спасибо! это сработало. –