Pergunta

Eu tenho um namespace administrador que me dá as rotas habituais, tais como admin_projects e admin_project, no entanto eles não estão se comportando da maneira usual. Esta é minha primeira Rails 2.3 projeto então talvez relacionadas Não consigo encontrar qualquer informação através do Google no entanto. |

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

O estranho é para uma determinada URL (por exemplo, / admin / projetos / 1.) Eu não têm de passar em um objeto para obter URL é de alguma forma adivinha-los:

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

Não se preocupe, não é realmente um problema apenas não percebeu isso antes.

Mas se eu tentar passar um objeto como é habitual:

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

": id" parece conter o objeto inteiro, então eu tento passar o id diretamente e funciona:

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

Isso não seria tão ruim, mas quando se trata de formas Eu costumo usar [: admin, @object], no entanto:

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

Por isso, não pode passar em um id, como ele precisa de um objetos classe para trabalho fora da rota correta de uso.

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

Não consigo detectar eventuais erros e isso é bastante normal, então eu não sei o que está acontecendo de errado ...

Foi útil?

Solução

Interessante. O que acontece quando você definir um método to_param no projeto? Por exemplo

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

Este deve ser o padrão e isso não deve ser necessário. Mas o que acontece se você torná-lo explícito? Tente adicionar o método acima, em seguida, volta para a sua abordagem original de só passando em torno @project

indo

Outras dicas

Eu gostaria de poder ajudá-lo em um presente. Nós temos um aplicativo grande com várias seções namespaced. As nossas rotas são definidas no método exato que você descreveu e estamos chamando nosso ajudante caminho com objetos. Nenhum onde na aplicação estamos acessando usando o id.

O aplicativo foi iniciado on Rails 2.1 e fez a transição através de 2.2 e 2.3 sem mudanças significativas para o roteamento. Desculpe eu não poderia ser mais ajuda.

Par

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top