2014-01-31 4 views
0

У меня есть таблица платежей. В представлении индекса я перечисляю все платежи в таблице и в представлении представления, я хотел бы показать форму всех платежей, где пользователь может выбрать, какие из них будут обрабатываться дальше.Rails 4 Маршрутизация - неопределенная локальная переменная

Над таблицей в представлении индекса действий у меня есть:

<%= link to "Customise", show_payment_path %> 

Тогда в контроллере:

def show 
    @payments = Payment.all 
    end 

В моих маршрутах файл:

resources :payments 

Ошибка Я получение составляет:

undefined local variable or method `show_payment_path' 

Я попытался

<%= link_to 'Customise Sepa Mandate', show_payments_path %> 

как хорошо, но это дает ту же ошибку. Как и использование url вместо пути.

ответ

-2

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

resources :payments, except: [:show] do 
    get '/show' => "payments#show", on: collection, as: :show 
end 
+0

Могу ли я сохранить show_payments_path? Или это тоже меняется? – SoSimple

+0

Также это дает мне: ошибка локального скачка без блока (выход) – SoSimple

+0

вы не можете сохранить переменную find переменной, выполнив команду rake routes в своем терминале – HarsHarI

0

Путь для находчивого маршрута show действия - это только payment_path (особый ресурс) или payment_path(id). Ваша ссылка «настроить» заставила бы меня поверить, что вы действительно хотите edit_payment_path(id).

См. Rails Guides — Generating Paths and URLs From Code для получения дополнительной информации.

+0

Я действительно не хочу редактировать, я хочу перечислить все платежи и индекс уже принят. payment_path дает мне: нет совпадений маршрутов {: action => "show",: controller => "payments"} отсутствующих необходимых ключей: [: id] (у меня есть @payments = Payment.all в действии контроллера) – SoSimple

+0

Это потому, как я уже сказал, «payment_path» - это когда у вас есть уникальный ресурс - ваши маршруты указывают «resource: payment», и у вас нет индекса. Если вам нужен индекс платежей, вы должны использовать 'resources: payments', тогда ваш путь будет' payments_path', но это маршрут к 'index' action/method' PaymentsController'. Если это происходит в другом месте, вы делаете это неправильно *. Что такое 'index', если не' индекс' платежей? – coreyward

0

Run реки маршруты команды, чтобы увидеть доступные маршруты и правильный синтаксис.

Пройдите show_payment_path (: id), чтобы получить страницу показа платежа.

Смежные вопросы