0

並べ替え可能なリストの作成に関する 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

これは、ページで並べ替えようとしているものの画像です。

edit_project_step パス内で並べ替えようとしている画像

4

1 に答える 1

0

それは一連の問題であることが判明しました...これが興味のある人のための私の最終的なコードです:

images.rb

  def sort
    params[:image].each_with_index do |id, index|
      Image.update_all({position: index+1}, {id: id})
    end
    render nothing: true
  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 id="images" data-update-url="<%= sort_images_url %>">
          <% @step.images.order("position").each do |image| %>
            <%=content_tag_for(:div, image) do %>
              <%= render :partial => 'images/image', :locals => {:image=> image} %>
            <% end %>
          <% end %>
        </div>
      </div>
    </div>

<% #drag images %>
<script>
$("#images").sortable({
  cursor: "move",
  axis: 'x', 
  update: function(){
    $.post($(this).data('update-url'), $(this).sortable('serialize'));
  }
  }).disableSelection();
</script>
于 2013-02-09T07:14:59.857 に答える