Возникли проблемы с сортировкой с использованием Ruby на рельсах и в качестве списка, позиция заняла - PullRequest
0 голосов
/ 03 мая 2010

У меня есть группы, у которых есть проекты. Я также создал представление заказа, подобное моему представлению Показа. Причиной создания дополнительного представления является то, что я использую представление 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)

Любые идеи о том, как я могу решить эту проблему. Я знаю, что есть ноль. Объект, я просто не понимаю, как.

1 Ответ

0 голосов
/ 03 мая 2010

Если номера строк не совпадают с ошибкой, это выглядит как строка

p.position = params['group_projects'].index(p.id.to_s) + 1

- вот где проблема. params['group_projects'] возвращается ноль по какой-то причине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...