Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Админка для rails проекта, Как лучше создать admin контроллер? 
V
    Опции темы
principala
Дата 9.1.2011, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



Информация, которая есть в интернете, довольно противоречива. 

Главный вопрос такой:
Допустим, с помощью команды 
Код

rails generate scaffold Product name:string

я сгенерировал модель и контроллер.

Как  мне сделать админку "ручками", не прибегая к сторонним плагинам? 
Т.е, чтобы была возможность управлять таблицей products НЕ из контроллера products_controller.rb.


PM MAIL   Вверх
principala
Дата 9.1.2011, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



После трех дней неудачных опытов ответ все-таки был найден.

Основывался на информации отсюда:
http://icebergist.com/posts/restful-admin-...ing-scaffolding


Опишу свои действия:
1. Создаю новый проект и генерю модель с контроллером с помощью скаффолдинга
Код

rails generate scaffold Product name:string

(для Rails 2.x вместо "rails generate" используйте команду "script/generate")
Для таблицы Product создается контроллер с именем products_controller.rb

2. Генерим пустой контроллер для админки:
Код

rails generate controller admin/products


Новички! Обратите внимание, что модель создается с именем в ЕДИНСТВЕННОМ числе (product), а для админ котроллера мы указываем название во МНОЖЕСТВЕННОМ числе (products). Эта штука происходит из-за соглашения имен, присутствующего в Rails.

3. В файл config/routes.rb вносим следующие изменения:
Код

namespace :admin do
  resources :products
end

4. Копируем функции из контроллера 
app/controllers/products_controller.rb 
в app/controllers/admin/products_controller.rb

5. Копируем все файлы шаблонов из папки app/views/products в папку app/views/admin/products;
6. В файле контроллера админки ищем все перенапрвления redirect_to (скорей всего их три)
Код

redirect_to(@product)       меняем на    redirect_to([:admin, @product])
redirect_to(products_url)  меняем на    redirect_to(admin_products_url)


7. Во всех файлах шаблонов для админки делаем перенаправления на шаблоны админки
<td><%= link_to 'Show', product%></td>   ===>   <td><%= link_to 'Show', [:admin, product] %></td>
new_product_path ===> new_admin_product_path
edit_product_path(product) ===> edit_admin_product_path(product)
products_path ===> admin_products_path


вот и все!

Добавлено @ 18:26
Остался еще вопрос:
При создании или редактировании продукта, необходимо нажимать на кнопку для подтверждения. 
Но нажатие на кнопку перенаправляет нас в общую часть приложения, а не админскую.
Почему этот редирект не работает так, как нужно?
Код

format.html { redirect_to([:admin, @product], :notice => 'Product was successfully created.') }


Это сообщение отредактировал(а) principala - 9.1.2011, 19:55
PM MAIL   Вверх
principala
Дата 9.1.2011, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



...и я продолжаю отвечать на свои вопросы! =)

кнопки не перенаправляли меня в админку, т.к. вызывался не тот шаблон.

В файле app/views/admin/products/_form.html.erb

первую строчку:
Код

<%= form_for(@product) do |f| %>


исправил на:
Код

<%= form_for([:admin, @product]) do |f| %>



теперь работает ВСЕ.

Это сообщение отредактировал(а) principala - 16.1.2011, 10:25
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.0421 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.