並べ替え可能なリストの作成に関する Railscast のエピソードに従い、モデルを内部的に更新する並べ替え可能なリストを作成することに成功しました – 私のアプリケーションでは、プロジェクトには多くのステップがあり (ステップはプロジェクトにネストされています)、並べ替え可能なステップを含むテーブルを作成しました。 project_steps パスを開くとアクセスできます。
私が今やろうとしているのは、edit_project_steps パス内から外部モデル (画像) を更新することです (ステップには多くの画像があります)。Railscast で行われていることを外部モデルの更新に拡張する方法がわかりません。edit_project_stepsパス内で画像を並べ替えようとすると、「ActionController::RoutingError (No route matches [POST] "/projects/1/steps/2/edit")」 というエラーが表示されます。
誰かが私を正しい方向に向けることができますか?
これが私がこれまでに持っているものです:
ルート.rb
resources :projects do
resources :steps do
collection {post :sort}
end
match "steps/:id" => "steps#number", :as => :number
end
resources :images do
collection {post :sort}
end
images.rb
class ImagesController < ApplicationController
# Sorts images
def sort
render nothing: true
end
end
steps/edit.html.erb
<div class="imageGallery span8">
<p style="margin: 5px 0px;"><b>Step Images</b> - Click and drag to rearrange</p>
<div class = "wrapper">
<div class="scrolls">
<div class="imageDiv" id="stepImages" data-update-url="<%= sort_images_url %>">
<div class="images">
<%= render :partial => 'images/image', :collection => @step.images.all %>
</div>
<div class="clear"></div>
</div>
</div>
</div>
<% #drag images %>
<script>
$(".imageDiv .images").sortable({
cursor: "move",
axis: 'x',
update: function(){
$.post($(this).data('update-url'), $(this).sortable('serialize'));
}
}).disableSelection();
</script>
レーキルート
sort_project_steps POST /projects/:project_id/steps/sort(.:format) steps#sort
project_steps GET /projects/:project_id/steps(.:format) steps#index
POST /projects/:project_id/steps(.:format) steps#create
new_project_step GET /projects/:project_id/steps/new(.:format) steps#new
edit_project_step GET /projects/:project_id/steps/:id/edit(.:format) steps#edit
project_step GET /projects/:project_id/steps/:id(.:format) steps#show
PUT /projects/:project_id/steps/:id(.:format) steps#update
DELETE /projects/:project_id/steps/:id(.:format) steps#destroy
project_number /projects/:project_id/steps/:id(.:format) steps#number
projects GET /projects(.:format) projects#index
POST /projects(.:format) projects#create
new_project GET /projects/new(.:format) projects#new
edit_project GET /projects/:id/edit(.:format) projects#edit
project GET /projects/:id(.:format) projects#show
PUT /projects/:id(.:format) projects#update
DELETE /projects/:id(.:format) projects#destroy
sort_images POST /images/sort(.:format) images#sort
images GET /images(.:format) images#index
POST /images(.:format) images#create
new_image GET /images/new(.:format) images#new
edit_image GET /images/:id/edit(.:format) images#edit
image GET /images/:id(.:format) images#show
PUT /images/:id(.:format) images#update
DELETE /images/:id(.:format) images#destroy
root / projects#index
これは、ページで並べ替えようとしているものの画像です。