Я использую пули в моем проекте, чтобы дать моим параметрам другое имя, но у меня есть два параметра: «how-does-it-work». (.../investor/how-do-it-work) (.../customer/how-does-it-work) Я хотел бы использовать пули так, как они в настоящее время установлены. Есть ли способ сделать это?Рельсы, как использовать 2 из этих же слизней
ответ
Создайте два разных маршрута/контроллеров и просто запросите соответствующую модель ActiveRecord
в действии show
. Предполагая, что есть slug
поле на вашей модели:
Rails.application.routes.draw do
resources :customers
resources :investors
end
class CustomersController < ApplicationController
def show
@customer = Customer.find_by(slug: params[:id])
end
end
class InvestorsController < ApplicationController
def show
@investor= Investor.find_by(slug: params[:id])
end
end
Это, вероятно, самый обычный способ решить эту проблему в Rails. Если вы используете драгоценный камень friendly_id, применяется тот же подход более или менее, за исключением, может быть, самого запроса.
Надеюсь, это поможет.
Итак, есть/инвестор/и/клиент/обе части слизняка?
Если это так, вы можете разделить строку и выполнить поиск на основе «how-do-it-work» в группировке «инвестора» или «клиента».
Если инвесторы и клиенты являются частью маршрута, у вас не должно быть трудного времени, потому что они указывают на два разных метода управления. Вы должны иметь возможность писать поиск на основе каждого из тех методов, которые соответствуют данным. Если данные совпадают, все ваши действия указывают на правильность правильных данных модели с правильными параметрами.
Если вы используете friendlyId, он обычно имеет встроенное сопоставление кандидатов. Кроме того, если вы имеете в виду сопоставление нескольких страниц с тем же самым слипом (что я делал в прошлом), вы можете отобразить страницу результатов, если хотите, путем рендеринга, основанного на количестве результатов.