2013-11-25 6 views
1

В моем приложении Rails я пытаюсь создать сортируемый список (следующий за RailsCast tutorial). У меня есть экран, который has_many Содержание, которые вложен:jQuery Сортировка с использованием вложенных ресурсов

screen.rb:

class Screen < ActiveRecord::Base 
    has_many :contents 
end 

content.rb:

class Content < ActiveRecord::Base 
    belongs_to :screen 
end 

routes.rb:

resources :screens do 
    resources :contents do 
    collection { post :sort } 
    end 
end 

На моем экране для экрана я хочу отобразить список содержимого, которые можно сортировать.

/screens/show.html.erb:

<ul id="content" data-update-url="<%= sort_screen_contents_path(@screen) %>"> 
    <% @screen.contents.each do |content| %> 
    <li><%= content.name %></li> 
    <% end %> 
</ul> 

и связанный с ним CoffeeScript:

jQuery -> 
    $('#content').sortable(
     axis: 'y' 
     update: -> 
      $.post($(this).data('update-url'), $(this).sortable('serialize')) 
    ); 

Когда я перетащить содержимое, мой журнал сервера показывает, что она проходит в screen_id как параметр, а не положение содержимого:

Started POST "/screens/2/contents/sort" for 127.0.0.1 at 2013-11-25 12:39:21 -0600 
Processing by ContentsController#sort as */* 
    Parameters: {"screen_id"=>"2"} 
    Rendered text template (0.0ms) 
Completed 200 OK in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms) 

Я полагаю, что проблема, вероятно, в том, что я определяю data-update-url в представлении, поскольку я прохожу в @screen, но, похоже, это требует, когда у вас есть вложенные ресурсы. Как я могу назвать действие Content#sort? Это проблема где-то еще?

ответ

0

Я думаю, что вам, возможно, придется использовать нотацию массива, как ваш URL обновления в настоящее время только через пропускные screen_id

data-update-url="<%= [:sort, @screen, @screen.contents] 
+0

Спасибо, я дал, что выстрел раньше, но @ screen.contents, кажется, быть массивом. Мой отображаемый HTML-код показывает: 'data-update-url ="/screens/2 /% 23% 3CActiveRecord :: Ассоциации :: CollectionProxy :: ActiveRecord_Associations_CollectionProxy_Content: 0x007faf6a666180% 3E/contents/sort "и я получаю аналогичную ошибку маршрутизации, связанную с что. –

+0

Да, извините, подумав об этом, это не сработало бы, я думаю, что это лежит в вашей разметке html, так как код js сериализует экранный div, а не дочерние divs – TheIrishGuy

Смежные вопросы