2012-02-03 77 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