Переопределяющие Rails помощники маршрутизации по умолчанию - PullRequest
2 голосов
/ 16 марта 2012

Я пишу приложение, в котором мне нужно переопределить помощники маршрутизации по умолчанию для модели.Так что, если у меня есть модель с именем Model, с соответствующим помощником model_path (), который генерирует «/ model / [id]».Я хотел бы переопределить этот помощник для генерации "/something/[model.name]".Я знаю, что могу сделать это в помощнике вида, но есть ли способ переопределить его на уровне маршрутизации?

Ответы [ 2 ]

3 голосов
/ 16 марта 2012

Вы можете определить to_param для вашей модели.Это возвращаемое значение будет использоваться в сгенерированных URL-адресах в качестве идентификатора.

class Thing
  def to_param
    name
  end
end

. Вы можете адаптировать свои маршруты к своему ресурсу следующим образом:

scope "/something" do
  resources :things
end

В качестве альтернативы, вы можете такжеприменимо использование подресурсов.

Наконец, вам нужно адаптировать свой контроллер, так как Thing.find(params[:id]) явно не будет работать.

class ThingsController < ApplicationController
  def show
    @thing = Thing.where(:name => params[:id).first
  end
end

Вы, вероятно, хотите убедиться, что nameВаш Thing уникален, так как вы будете наблюдать странные вещи, если это не так.

Чтобы избавить вас от необходимости реализовывать все это самостоятельно, вас также может заинтересовать friendly_id , который дает вамэто и некоторые дополнительные действия (например, для использования сгенерированных слагов)

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

Тебе нужен прицел в маршрутах. Rb

scope "/something" do
  resources :models
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...