Rails route - неопределенная локальная переменная или метод - PullRequest
0 голосов
/ 19 марта 2012

Я только начал работать с Rails, и у меня возникла проблема с определением маршрута.Кажется, ни одна из документации, которую я могу решить, не решает проблему, и я получаю неопределенную локальную переменную или ошибку метода.

Мне нужно щелкнуть ссылку и выполнить определенное действие, sortit.У sortit нет представления, потому что он сортирует объекты mystuff и затем перенаправляет на страницу индекса.Когда я использую одно из предопределенных действий, то фактически все работает.Конечно, ни одно из предопределенных действий не является тем, что я хочу сделать.

my /config/routes.rb file:

match "/mystuff/sortit'", :controller => "mystuff", :action => "sortit"

resources :mystuff

my /app/controllers/mystuff_controller.rb file

class MystuffController < ApplicationController
....
  def sortit
     @mystuff.sort
     redirect_to_mystuff_path
  end
....
end

my / app / views / mystuff/index.html.haml file:

-#  This file is app/views/mystuff/index.html.haml
%h1 All My Stuff

%table#mystuff
  %thead
    %tr
      %th= link_to raw("Type"), sortit
 ....

Как я уже говорил, когда я заменяю sortit на предопределенное действие, то это действие выполняется.Однако sortit завершается неудачно с этой ошибкой:

undefined local variable or method `sortit' for #<#<Class:0x9997a10>:0x997c0f8>
app/views/mystuff/index.html.haml:7:in `_app_views_mystuff_index_html_haml__61272557_87671610'

Итак, что я пропустил и как я могу выполнить sortit при нажатии на сгенерированную ссылку для Типа?

Спасибо!

PS: вывод моих рейковых маршрутов:

mystuff GET / mystuff (.: Format) {: action => "index",: controller => "mystuff"}

....

mystuff_sortit / mystuff / sortit (.: Format) {: controller => "mystuff",: action => "sortit"}

....

Таким образом, Rake Routes показывает мой маршрут с именем mystuff_sorit, но разве действия не добавляются к имени объекта?Разве это не должен быть sortit_mystuff?

1 Ответ

0 голосов
/ 19 марта 2012

Ваше действие sortit, но ваше мнение index

Измените свое действие на index

redirect_to также требуется пробел, поэтому используйте redirect_to mystuff_path ... на самом деле это будет my_stuffs_path (множественное число), которое вы можете увидеть из rake routes (в командной строке, наиболее полезной), которое вы получите, определив его как ресурс в маршрутах.

...