RoR: вложенные маршруты пространства имен, неопределенная ошибка метода - PullRequest
4 голосов
/ 30 сентября 2008

Я работаю над разделом администрирования нового приложения rails и пытаюсь настроить некоторые маршруты, чтобы все было «правильно». У меня есть следующий контроллер:

class Admin::BlogsController < ApplicationController
  def index
    @blogs = Blog.find(:all)
  end

  def show
    @blog = Blog.find(params[:id])
  end

  ...
end

в маршрутах. Rb:

map.namespace :admin do |admin|
  admin.resources :blogs
end

в представлениях / admin / blogs / index.html.erb:

<% for blog in @blogs %>
  <%= link_to 'Delete', admin_blog(blog), :method => :delete
<% end %>

я проверил, что маршруты существуют:

admin_blogs GET /admin/blogs {:action => "index", :controller=>"admin/blogs"}
admin_blog  GET /admin/blogs/:id {:action => "show", :controller => "admin/blogs"}
....

но когда я пытаюсь просмотреть http://localhost:3000/admin/blogs, я получаю эту ошибку:

undefined method 'admin_blog' for #<ActionView::Base:0xb7213da8>

где я иду не так и почему?

Ответы [ 3 ]

10 голосов
/ 30 сентября 2008

Ваша ссылка для удаления должна заканчиваться на _path:

<%= link_to 'Delete', admin_blog_path(blog), :method => :delete %>
2 голосов
/ 30 сентября 2008

Я предполагаю, что вы используете rails 2.0.x, поэтому вы генерируете маршрут __path

admin_blog_path(blog) 

и если вы едете на предыдущей версии, я думаю, что это просто

blog_path(blog)
1 голос
/ 27 марта 2009

Примечание: Я также вижу, что ваш контроллер определяется так:

class Admin::BlogsController < ApplicationController

не должно ли быть так?

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