嵌套路由,创建属于项目的空缺

时间:2011-08-01 21:21:01

标签: ruby-on-rails routes nested

我在这里的第一个问题。我很困惑,我试图建立一个空缺的链接。但是我可以得到的一些理由是Vacancy.project的nil ...我在create方法中尝试了params [:project_id] .to_i并且得到了0,但是这个案例的项目ID是156,并且在查看params.inspect就是这样。

我在我的新控制器中也没有尝试任何操作,并尝试读取会话信息。位置代码只是空位也建立了一个位置,但这不应该影响很多,是吗?

有什么想法吗?

空缺控制器

def new

 @vacancy = Vacancy.new

 @vacancy.position = Position.new

 @vacancy.project_id = params[:project_id]


respond_to do |format|
  format.html # new.html.erb
  format.xml  { render :xml => @vacancy }

end
end

使用

的路线
  resources :projects do

      resources :vacancies

  end

链接即时使用:

      <%= link_to "Add Vacancy", new_project_vacancy_path(@project)  %>

模型       项目...       has_many:职位空缺

&安培;       空缺.....     belongs_to:project

1 个答案:

答案 0 :(得分:0)

对于超干实现,你可以这样做:

    class VacanciesController < ApplicationController

      before_filter :load_project, :load_vacancy

      def new
      end

      def edit
      end

      def create
        if @vacancy.update_attributes( params[:vacancy] )
          flash[:notice] = 'Vacancy successfully created/updated'
          redirect_to project_vacancies_path( @project )
        else
          render :new
        end
      end

      alias :update :create

      protected

      def load_vacancy
        @vacancy = if params[:id].blank?
          @project.vacancies.build
        else
          @project.vacancies.find(params[:id])
        end
      end

      def load_project
        @project = Project.find( params[:project_id] )
      end

    end