私は前にリストされた予約のIDと情報を保持する別のページにリンクしようとしています。たとえば、予約テーブルの行を一覧表示して情報を表示し、クリック後に予約テーブルを編集するためのボタンを含む例があります。私はボタンを追加し、ページに転送されるとエラーが発生します。経路が一致しません: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) "コードの下部にLINK_TOある"
<% @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 %>
予約コントローラ
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'
私は本質的に別のページで予約を編集したいと思います!!これどうやってするの?私はページの編集を作成しようとしましたが、間違っているようです。
あなたはリソースを持っている:あなたのルートで予約? – Hardik127
改訂版と予約の関係は何ですか? – oreoluwa
この関係は、ユーザーが予約を行い、改訂者が外部キーとして含まれているという関係です。リマーケティング担当者だけが作成したすべての予約が表示されたページに移動します。リンクをクリックすると、別のビューにリンクして予約ページを編集するためのフォームに記入することができます。改訂者が別の量の情報を予約の無制限列に追加できるようにします。 –