У меня есть группы, у которых есть проекты. Я также создал представление заказа, подобное моему представлению Показа. Причиной создания дополнительного представления является то, что я использую представление Group # show для основного отображения на моем сайте.
Итак, в моем Groups_Controller есть следующее
def order
@group = Group.find(params[:id])
end
def sort
@group = Group.find(params[:id])
@group.projects.each do |p|
p.position = params['group_projects'].index(p.id.to_s) + 1
p.save
end
render :nothing => true
end
Тогда, на мой взгляд
<ul id="group_projects">
<% @group.projects.each do |p|%>
<li class="project_<%= p.id %>"><%= p.title %> - <%= p.position %></li>
<% end -%>
<%= sortable_element 'group_projects', :url => { :action => "sort", :id => @group }, :complete => visual_effect(:highlight, 'group_projects')%>
Я не испортил свои маршруты, но мне интересно, не является ли это частью проблемы.
Таким образом, сортировка работает, но она не сохраняет позицию. Я получаю следующую ошибку:
Processing GroupsController#sort (for 127.0.0.1 at 2010-05-03 11:14:19) [POST]
Parameters: {"authenticity_token"=>"vODeoGHH4osrDeBY+fBI/x+YgEs6SJBO15cF/qLqW5o=", "id"=>"1"}
User Load (47.6ms) SELECT * FROM "users" WHERE ("users"."id" = 1) LIMIT 1
Group Load (0.5ms) SELECT * FROM "groups"
Group Load (0.2ms) SELECT * FROM "groups" WHERE ("groups"."id" = 1)
Project Load (1.7ms) SELECT * FROM "projects" WHERE ("projects".group_id = 1) ORDER BY position
NoMethodError (You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.index):
app/controllers/groups_controller.rb:136:in `sort'
app/controllers/groups_controller.rb:135:in `sort'
Rendered rescues/_trace (106.7ms)
Rendered rescues/_request_and_response (1.2ms)
Rendering rescues/layout (internal_server_error)
Любые идеи о том, как я могу решить эту проблему. Я знаю, что есть ноль. Объект, я просто не понимаю, как.