-2

我有兩種模型:Schedule和Project。計劃belongs_To項目和項目has_one計劃。對進度和項目的路線嵌套這樣的:在導軌路線中,嵌套資源導致白屏

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,頁面在safari中變白。在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:

這裏有一些的控制器:

時間表#創建:

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

我不再獲得白色屏幕,但輸入的網址搞砸:

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