Изменилась ли маршрутизация в пространстве имен в Rails 2.3? - PullRequest
2 голосов
/ 29 июля 2009

У меня есть пространство имен администратора, которое дает мне обычные маршруты, такие как admin_projects и admin_project, однако они не ведут себя обычным образом. Это мой первый проект на Rails 2.3, поэтому, возможно, я не могу найти какую-либо информацию через Google.

map.namespace(:admin) do |admin|
  admin.resources :projects
end

Странная вещь для данного URL (например, / admin / projects / 1). Мне не нужно передавать объект, чтобы получить URL, он как-то угадывает их:

<%= admin_project_path %> # => /admin/projects/1

Не беспокойся, не проблема, просто не замечал этого раньше.

Но если я попытаюсь передать объект как обычно:

<%= admin_project_path(@project) %> # => admin_project_url failed to generate from {:controller=>"admin/projects", :action=>"show", :id=>#<Project id: 1, name: "teamc...>

": id", кажется, содержит весь объект, поэтому я пытаюсь передать идентификатор напрямую, и это работает:

<%= admin_project_path(@project.id) %> # => /admin/projects/1

Это не так уж плохо, но когда дело доходит до форм, я обычно использую [: admin, @object], однако:

<%= url_for [:admin, @project.id] %> # => undefined method `admin_fixnum_path'

Так что я не могу передать идентификатор, так как ему нужен класс объектов для определения правильного маршрута для использования.

<%= url_for [:admin, @project] %> # => Unfortunately this yields the same error as passing a object to admin_project_path, which is what it is calling.

Я не могу обнаружить никаких ошибок, и это довольно стандартно, поэтому я не уверен, что происходит не так ...

Ответы [ 2 ]

2 голосов
/ 31 июля 2009

Интересно. Что происходит, когда вы определяете метод to_param в Project? Например

class Project < ActiveRecord::Base
  def to_param
    self.id
  end
end

Это должно быть по умолчанию, и это не обязательно. Но что произойдет, если вы сделаете это явно? Попробуйте добавить описанный выше метод, а затем вернитесь к исходному подходу - только обойти @ project

0 голосов
/ 02 августа 2009

Хотел бы я помочь вам в этом. У нас есть большое приложение с несколькими разделами пространства имен. Наши маршруты определены в точном методе, который вы описали, и мы вызываем наш помощник пути с объектами. Нет, где в приложении мы обращаемся с использованием идентификатора.

Наше приложение запустилось на Rails 2.1 и перешло через 2.2 и 2.3 без существенных изменений в маршрутизации. Извините, я не могу больше помочь.

Peer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...