рельсы, отдыхайте, выполняйте различные действия с ответами на - PullRequest
0 голосов
/ 17 апреля 2010

Может быть, моя логика не спокойна, или я знаю, так ли это, как вы, но это то, что я пытаюсь сделать.

Я получаю категорию внутри контроллера категорий, а затем, как только я получу эту категорию, я хочу вернуться на индексную страницу в другом контроллере, но сохранить эту @category и Category.busineses.

Перед отдыхом я бы просто сделал это:

render: controller => "business"

и он бы отобразил представление действия индекса в этом контроллере.

теперь в моем блоке reply_to у меня есть это

   format.html {redirect_to(business_path)} # index.html.erb
   format.xml  { render :xml => @businesses }

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

Итак, я хочу визуализировать действие, а не перенаправлять на это действие. это возможно?

Должен ли я просто заменить response_to на render: controller =>?

Ответы [ 3 ]

2 голосов
/ 17 апреля 2010

Я думаю, что то, что вы пытаетесь сделать (если я правильно понимаю), будет лучше всего достигнуто с помощью вложенных ресурсов. Если есть компании, разделенные на категории, и вы хотите отобразить список всех компаний в определенной категории, вы можете настроить приложение следующим образом:

Модель

class Category < ActiveRecord::Base
  has_many :businesses
end

class Business < ActiveRecord::Base
  belongs_to :category
end

Маршруты

map.resouces :businesses

map.resources :categories do |categories|
  categories.resources :businesses
end

Контроллер

class BusinessesController < ApplicationController
  def index
    @category = Category.find(params[:category_id]) if params[:category_id]
    conds = params[:category_id] ? { :category_id => params[:category_id] } : nil
    @businesses = Business.all(:conditions => conds)
  end
end

Затем просто получите доступ к списку предприятий категории, как это: /category/1/businesses

1 голос
/ 17 апреля 2010

Вы не можете использовать redirect_to, если хотите использовать переменную экземпляра, так как она использует render следующим образом.

format.html { render :controller=> 'buisness'  ,:action => "index" }

ИЛИ ТОЛЬКО

format.html { render :controller=> 'buisness'}
1 голос
/ 17 апреля 2010

Я не на 100% уверен в том, что вы пытаетесь сделать, но у вас есть несколько вариантов представления в приложении RESTful.

Вы можете передать параметры в редирект. В этом случае мы передаем идентификатор категории в качестве параметра в HTTP GET. Страница в конце перенаправления может обработать это соответствующим образом:

format.html {redirect_to( business_path(:category_id => @category.id) }

Вы также можете визуализировать вид указанного действия или шаблона. В этом случае мы визуализируем представление, определенное в "{current_controller} /business.html.erb":

format.html { render :action => "business" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...