-2

У меня есть две модели: расписание и проект. Расписание принадлежит_То и проект имеет расписание. Маршруты по графику и проект вложены как это:В маршрутах рельсов вложенные ресурсы вызывают белый экран

get 'projects/current', to: 'projects#show_current', as: :current_freelancer_projects 
resources :projects do 
    resources :schedules 
end 

Когда я бегу рейк маршруты, это говорит о пути, чтобы сделать новый график:

new_project_schedule GET  /projects/:project_id/schedules/new(.:format) 

Проблема заключается в том, когда я включаю ссылка на new_project_Schedule на странице, страница бела в сафари. В Firefox, страница будет загружаться, но когда я нажимаю кнопку отправки формы, я получаю ошибку:

First argument in form cannot contain nil or be empty 

Если я закомментируйте ссылку на форму, я не получаю белый экран. Вот ссылка:

<% @projects.each do |project| %> 
    <tr> 
     <td><%= project.title %></td> 
     <td><%= project.employer.email %></td> 
     <td>date</td> 
     <td>rating</td> 
     <td>bid</td> 
     <td>tags</td> 
     <td><%= link_to 'Create Schedule', new_project_schedule_path(project.id) %></td> 
    </tr> 
<% end %> 

Я знаю @projects определяется потому, что все другие Td клетки работают. Как я могу это исправить?

НЕКОТОРЫХ ДОПОЛНИТЕЛЬНО:

Вот контроллер для страницы, которая отображает все проекты и имеет ссылки на каждый составить расписание страницы:

def show_current 
    @projects = current_user.projects 
end 

UPDATE:

Вот некоторые контроллеров:

Расписания: 0:

def create 
    if !Schedule.where(project_id: params[:project_id]).any? 
     @schedule = Schedule.new(schedule_params) 
     @schedule.project = Project.find(params[:project_id]) 
     if @schedule.project.student_id == current_user.id 
      if @schedule.save && @schedule.freelancer_accepts  
        flash[:notice] = "Successfully created schedule." 
        redirect_to profile_path(current_user.profile_name) 
      else 
       render :action => 'new', :notice => 'Invalid Schedule' 
      end 
     else 
      render :action => 'new', :notice => 'Schedule is invalid.' 
     end 
    else 
     render :action => 'new', :notice => 'A schedule has already been created.' 
    end 
end 

Расписание # новый:

def new #This controller is what the link above goes to 
    @schedule = Schedule.new 
    @project = Project.find(params[:project_id]) 
    @schedule.tasks.build #tasks is a model that belongs_to schedule 
end 

Проекты # show_current:

def show_current #In this action view, @projects is looped through and for each project, a link to schedules#new is displayed, 
    @projects = current_user.projects 
end 

Новый вид Расписание:

<%= form_for [@project, @schedule] do |f| %> 
    <%= f.fields_for :tasks do |builder| %> 
      <%= render 'task_fields', :f => builder %> 
    <% end %> 
    <p><%= link_to_add_fields "Add task", f, :tasks %> 
    <p><%= f.submit "Submit" %></p> 
<% end %> 

UPDATE:

Если изменить link_to к этому :

<%= link_to 'Create Schedule', new_project_schedule_path(project.id, Schedule.where(project_id: project.id)) 

Я больше не получаю белый экран, но URL перепутались:

http://localhost:3000/projects/24/schedules/new.%23%3CActiveRecord::Relation::ActiveRecord_Relation_Schedule:0x007fa1d6422a78%3E 

Я знаю, что URL не может быть правильным, так что-то мне подсказывает, я на самом деле не устранило проблему.

UPDATE:

Когда я изменить что-либо на странице просмотра проектов # show_current, страница будет снова работать временно. Однако, если я обновляю его несколько раз или перехожу на другую страницу, а затем возвращаюсь назад, он снова становится белым. Если я что-то изменил на странице, он снова будет работать снова, а затем снова станет белым. Поэтому, как я вижу, проблема должна быть либо с проектами # show_current или с маршрутами. Я добавляю некоторые коды маршрутов к вышеперечисленным маршрутам, так как теперь кажется, что это может быть актуально.При этом я пытался изменить код маршрута, но ничего не работает.

ответ

-1

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

+0

__Wow__. Хотел бы я проголосовать за этот ответ не один раз. – zeantsoi

 Смежные вопросы

  • Нет связанных вопросов^_^