Вложенные маршруты, Создание вакансии, которая принадлежит проекту - PullRequest
1 голос
/ 02 августа 2011

мой первый вопрос здесь. Я застрял, я пытаюсь получить ссылку, чтобы создать вакансию. Но по какой-то причине все, что я могу получить, это ноль для Vacancy.project ... Я пробовал params [: project_id] .to_i в методе create, и это возвращает мне 0, но идентификатор проекта для этого случая - 156, и view 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: вакансии

& Вакансия ..... принадлежат: проект

1 Ответ

0 голосов
/ 02 августа 2011

Для ультра сухой реализации вы можете сделать это так:

    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
...