2012-02-03 55 views
1

所以我有一個關係,其中服務的has_many 狀態Ruby on 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 2012-02-03 05:59:00

回答

0

不確定這是錯誤的原因。但是你要調用的方法

service_statuses_path 

改變

service_statuses_path(@service, @status) 

這將產生類似下面的路徑。

/服務/ service_id爲/狀態/ STATUS_ID

+0

現在得到這個:沒有路由匹配{:controller =>「statuses」,:service_id => nil,:format =>#<狀態id:nil,時間:nil,狀態:nil,消息:nil,service_id:nil, created_at:nil,updated_at:nil>} – 2012-02-03 16:54:46

+0

你不需要:路徑選項here.Just使用<%= form_for [@service,@status] do | f |%> – 2012-02-06 05:08:28

+0

謝謝!那工作。 – 2012-02-07 05:24:16