2016-07-05 3 views
0

ID와 이전에 예약 된 예약 정보를 유지하는 다른 페이지에 link_to하려고합니다. 예를 들어 내 예약 테이블의 행을 나열하여 정보를 표시하고 클릭 한 후 예약 테이블을 편집하는 버튼을 포함 할 수 있습니다. 버튼을 추가하고 페이지로 연결되면 오류가 발생합니다.경로가 일치하지 않습니다. id => nil

오류 :이 ID를 어떻게받을 수

ActionController::UrlGenerationError in Reservations#your_reservations 
No route matches {:action=>"edit", :controller=>"reservations", :id=>nil, :reviser_id=>#<Reservation id: 107, user_id: 4, reviser_id: 1, missing required keys: [:id] 

?

Html.view (your_reservations)

<% @revisers.each do |reviser| %> 
 
\t \t \t <% reviser.reservations.where("status = ?", true).each do |reservation| %> 
 

 
\t \t \t <script> 
 
\t \t \t \t 
 
\t \t \t \t var total = <%= reviser.reservations.where("status = ?", true).sum(:total) %>; 
 
\t \t \t \t $('#sum').html(total); 
 
\t \t \t \t 
 
\t \t \t </script> 
 
\t \t \t <div class="panel-body" style=""> 
 
\t \t \t \t <div style=""> 
 
\t \t \t \t <div class="col-md-12 " style="border:3px solid black;height:108px;max-height:108px;min-width:703px;"> 
 

 
\t \t \t \t \t <!-- first column --> 
 
\t \t \t \t \t <div class="row" style=""> 
 

 

 
\t \t \t \t \t \t <div class="col-sm-3 center " style=""> 
 
\t \t \t \t \t \t \t <div style="margin-left:-45px;"> 
 
\t \t \t \t \t \t \t \t <%= reservation.reviser.essay_type %> 
 
\t \t \t \t \t \t \t </div> 
 
\t \t \t \t \t \t </div> 
 

 

 
\t \t \t \t \t \t <div class="col-sm-2 center " > 
 
\t \t \t \t \t \t \t <div style=" margin-left:-40px;"> 
 
\t \t \t \t \t \t \t <% if reservation.document_file_name != nil %> 
 
\t \t \t \t \t \t \t \t <%= link_to "File Download", reservation.document.url(:original, false), class: "btn btn-download" %> 
 
\t \t \t \t \t \t \t \t <% end %> 
 
\t \t \t \t \t \t \t \t <script type="text/javascript"> 
 
\t \t \t \t \t \t \t \t \t $(":file").filestyle({buttonName: "btn btn-download", iconName: "fa fa-paper", buttonText: "Choose Word Doc", input: false}); 
 
\t \t \t \t \t \t \t \t </script> 
 
\t \t \t \t \t \t \t </div> 
 
\t \t \t \t \t \t </div> 
 
\t \t \t \t \t \t <div class="col-sm-2 center " > 
 
\t \t \t \t \t \t \t <div style="margin-left:35px;"> 
 
\t \t \t \t \t \t \t \t Due 
 
\t \t \t \t \t \t \t </div> 
 
\t \t \t \t \t \t \t 
 
\t \t \t \t \t \t </div> 
 
\t \t \t \t \t \t <div class="col-sm-2 center " > 
 
\t \t \t \t \t \t \t <div style="margin-left:70px;"> 
 
\t \t \t \t \t \t \t \t <%= link_to "Turn In", edit_reviser_reservation_path(reservation), class: "btn btn-download" %> 
 
\t \t \t \t \t \t \t </div> 
 
           <% end %> 
 
           <% end %>

예약 컨트롤러 "코드의 하단은 LINK_TO하다"

before_action :find_reservation, only: [:edit, :update] 
    before_filter :require_permission, only: [:edit, :update] 



def edit 
    end 

    def update 
    if @reservation.update(reservation_params) 
     redirect_to your_reservations_path 
    else 
     render 'edit' 
    end 

    end 


protect_from_forgery except: [:your_reservations] 
def your_reservations 
    @revisers = current_user.revisers 
    @user = current_user 
    @reservations = @reservations 

end 

def completed_file_upload 

end 

def find_reservation 
    @reservation = Reservation.find(params[:id]) 
    end 
    def require_permission 
    @reservation = Reservation.find(params[:id]) 
    if current_user.id != @reservation.user_id 
     redirect_to root_path, notice: "Sorry, you're not allowed" 
    end 

    end 

Routes.rb

get '/your_reservations' => 'reservations#your_reservations' 
get '/your_reservations/completed_file_upload' => 'reservations#completed_file_upload' 

본질적으로 다른 페이지에서 예약을 편집하고 싶습니다 !! 내가 어떻게 할 수 있니? 페이지에 대한 편집을 만들려고했는데 잘못 생각한 것 같습니다.

+0

당신은 자원이 수행 경로에 예약? – Hardik127

+0

수정 자와 예약의 관계는 무엇입니까? – oreoluwa

+0

관계는 사용자가 예약을하고 개정자가 외부 키로 포함됩니다. 편집자 만이 모든 예약이 이루어진 페이지를 보는 페이지. 링크를 클릭하면 다른보기로 링크하여 예약 페이지를 편집하는 양식을 채울 수 있습니다. 수정 자 (reviser)가 예약의 nil 열에 다른 양의 정보를 추가 할 수있게하려고합니다. –

답변

1

빠른 수정 :

edit_reviser_reservation_path(reservation.reviser, reservation) 
+0

이 작품! 지금 체크 아웃하고 싶다면 다음 페이지의 양식에 문제가 있습니다 !!! 아프다. 대단히 감사합니다 !! –

+0

굉장합니다. Github 요령으로 추가 질문을 게시하거나 SO에 대한 다른 질문을 할 수 있습니다. – oreoluwa

+0

나는 그것을 이해했다! 그러나 나는 내가 게시 할 것 인 스타일에 관해 다른 질문을 가지고있다!! 감사!! –

관련 문제