2016-03-14 2 views
1

Я создаю API с rails5.beta, я последовал за руководство по созданию вложенных маршрутов: http://guides.rubyonrails.org/routing.html#nested-resourcesВложенные маршруты не работает, как ожидалось

Мои модели:

class Paymethod < ApplicationRecord 
    has_many :transactions 
end 

class Transaction < ApplicationRecord 
    belongs_to :paymethod 
end 

и routes.rb

resources :paymethods do 
    resources :transactions 
end 

rake routes дает мне:

paymethod_transactions GET /paymethods/:paymethod_id/transactions(.:format)  transactions#index 

Но я всегда получаю тот же результат для любого paymethod_id

GET aymethods/1/transactions

[ 
    { 
    "id": 1, 
    "amount": 10, 
    "user_id": 21, 
    "paymethod_id": 1, 
    }, 
    { 
    "id": 2, 
    "amount": 1, 
    "user_id": 21, 
    "paymethod_id": 1, 
    } 
] 

и так же по: GET paymethods/2/transactions

[ 
    { 
    "id": 1, 
    "amount": 10, 
    "user_id": 21, 
    "paymethod_id": 1, 
    }, 
    { 
    "id": 2, 
    "amount": 1, 
    "user_id": 21, 
    "paymethod_id": 1, 
    } 
] 

Итак, почему его не фильтровать результаты по paymethod_id?

Btw, он работает с рельсами, как Paymethod.find(2).transactions

Здесь через контроллеры: https://gist.github.com/nilsigusi/f59e65dd34495e08eaee

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

+0

Можете ли вы показать, как выглядит ваш контроллер? –

+0

Ваш контроллер, вероятно, не найдет правильный Paymethod. Как сказал KyleDecot, мы должны видеть, что ваш контроллер проверяет, есть ли у вас 'Paymethod.find (params [: paymethod_id]). Transaction' – MrYoshiji

+0

Я обновил вопрос с контроллерами. – user1908375

ответ

1

В вашей сущности, вы имели это в строка 59: (https://gist.github.com/nilsigusi/f59e65dd34495e08eaee#file-gistfile1-txt-L59)

@transactions = Transaction.all 

Какие Ретур n все записи транзакций, а не условия.

Заменить это:

@transactions = Transaction.where(paymethod_id: params[:paymethod_id]) 

Чтобы получить все записи транзакций, принадлежащие к paymethod.

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