В моем приложении 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
? Это проблема где-то еще?
Спасибо, я дал, что выстрел раньше, но @ screen.contents, кажется, быть массивом. Мой отображаемый HTML-код показывает: 'data-update-url ="/screens/2 /% 23% 3CActiveRecord :: Ассоциации :: CollectionProxy :: ActiveRecord_Associations_CollectionProxy_Content: 0x007faf6a666180% 3E/contents/sort "и я получаю аналогичную ошибку маршрутизации, связанную с что. –
Да, извините, подумав об этом, это не сработало бы, я думаю, что это лежит в вашей разметке html, так как код js сериализует экранный div, а не дочерние divs – TheIrishGuy