#ruby-on-rails #ajax #ruby-on-rails-3
#ruby-on-rails #ajax #ruby-on-rails-3
Вопрос:
Я начинаю с RoR, и это моя первая попытка использовать новую remote_function. У меня есть что-то вроде приложения для управления проектами, поэтому у вас есть проекты (потоки), и у них есть несколько задач. Внутри представления stream show я хочу перечислить задачи с флажком рядом с ними. Если пользователь нажимает на флажок, я хочу опубликовать в /tasks/3 отправка выполнена = true, чтобы запись, вероятно, была обновлена.
Вот код, который я придумал:
<%= check_box_tag «id», «id», задача.выполнено, :onclick => remote_function( :update => «задача», :url => { :action => :update }, :with => «‘сделано=true'», :завершено => «оповещение(‘привет’)») %>
Он печатает флажок и проверяет его автоматически в зависимости от статуса task.done. Но когда я запускаю onclick и просматриваю журналы, я вижу следующую запись:
ActionController::RoutingError (Маршрут не соответствует «/ streams / 3»):
«/ streams / 3» звучит неправильно, я бы действительно ожидал увидеть что-то вроде /tasks / id вместо этого.
Можете ли вы помочь мне выяснить, что я делаю неправильно?
Вот полный код для представления.
<tr>
<td class="task">
<span class="tasktitle">
<%= check_box_tag "id", "id", task.done,
:onclick => remote_function(
:update => "task",
:url => { :action => :update },
:with => "'done=true'",
:complete => "alert('hi')" ) %>
<span class="<%= if (task.done) then "editable_field_complete" else "editable_field" end %>" id="task_title_<%= task.id %>">
<%= best_in_place task, :title, :type => :input %>
</span>
</span>
<span class="taskdelete"><%= link_to "delete", task, :method => :delete, :class => "delete",
:confirm => "You sure?",
:title => task.title %></span>
<span class="taskcreated">
Created <%= time_ago_in_words(task.created_at) %> ago.
</span>
</td>
</tr>
Большое спасибо, ребята
Ответ №1:
Причина ошибки: Забыл упомянуть подсказку указателя контроллера:http://api.rubyonrails.org/classes/ActionDispatch/Routing/UrlFor.html Всегда обращайтесь к api для rails, это очень полезно для меня.
Комментарии:
1. Я добавил свойство controller, а также свойство ID с идентификатором задачи, и теперь я вижу, что оно отправляется в нужное место, но когда я просматриваю журналы, я все еще вижу это сообщение об ошибке: ActionController::RoutingError (Маршрут не соответствует «/ tasks / 20»): Я проверил свой файл конфигурации / маршрутов и вижу, что я правильно определил ресурсы: задачи . Что еще я могу упустить?
Ответ №2:
Находится ли флажок в представлении «поток»?
Просто напишите :url => { :action => :update, :controller => 'tasks'}
. Это должно решить вашу проблему.
Комментарии:
1. Я добавил свойство controller, а также свойство ID с идентификатором задачи, и теперь я вижу, что оно отправляется в нужное место, но когда я просматриваю журналы, я все еще вижу это сообщение об ошибке: ActionController::RoutingError (Маршрут не соответствует «/ tasks / 20»): Я проверил свой файл конфигурации / маршрутов и вижу, что у меня правильно определены ресурсы: задачи. Что еще я могу упустить?
2. не могли бы вы, пожалуйста, добавить свой routes.rb в свой пост? и можете ли вы получить доступ к / tasks / 20 с помощью своего браузера?