Рельсы оповещения Groupon - PullRequest
       0

Рельсы оповещения Groupon

0 голосов
/ 11 марта 2011

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

Я хотел бы сделать 2 отдельных действия контроллера в одном макете в рельсах.

У меня есть 2 контроллера: купоны и MainAlert. В теле страницы макета моего приложения есть <yield >, который загружает действие индекса Coupons или MainAlerts в зависимости от запроса (например, localhost / coupons или localhost / MainAlerts).

Тем не менее, я хотел бы загрузить индексное действие Coupons или MainAlert или другого контроллера (в зависимости от запроса), но ВСЕГДА загружайте _form (где пользователь создает новое предупреждение) в самом верху, который я буду скрывать и показывать.

Опция "Получить предложения по электронной почте (+)" на groupon.com

Как загрузить оба действия контроллера (индекс из Coupons и _form (new? Create?) Из MainAlerts в макете. Значения формы MainAlert должны быть сохранены в БД, если пользователь нажимает submit.

Я открыт для предложений о том, как сделать это по-другому.

Спасибо, что уделили время всем. =) * * 1016

1 Ответ

1 голос
/ 12 марта 2011

Я тоже новичок, так что жди более изящных ответов.

Но одним из способов решения этой проблемы было бы использование before_filter в Application Controller, чтобы всегда устанавливать новую переменную экземпляра MainCoupon при обслуживании каждого действия. После этого вы можете использовать рендер 'maincoupon / form' для рендеринга формы в макете. Форма должна работать должным образом, поскольку переменная need экземпляра была установлена ​​before_filter.

Это может выглядеть примерно так:

# application_controller.rb
class ApplicationController < ActionController::Base
  # other stuff
  before_filter :new_coupon


  # other stuff


  def new_coupon
    @maincoupon = MainCoupon.new
  end
end

В макете вы можете иметь

<% = render 'maincoupons/form' %>

Или еще лучше, используя HAML, просто:

= render 'maincoupons/form'

Как правило, ваше новое действие связано с представлением, в котором пользователь вводит информацию в форму. Новое действие в контроллере создает новый объект @maincoupon = MainCoupon.new желаемого типа, который используется в качестве «скаффолда» для построения формы.

Когда пользователь отправляет, информация о форме упаковывается и отправляется в качестве параметра в действие создания, которое берет информацию, отправленную из формы, и использует ее для создания нового объекта нужного типа. @maincoupon = MainCoupon.new(params[:maincoupon])

После этого он использует метод @maincoupon.save, чтобы сохранить его в базе данных. Вы можете попробовать соответствующие методы модели самостоятельно в консоли (rails console). Например:

> A = User.new

Создает нового пользователя, но не сохраняет его в БД. Вы могли бы продолжать так:

> A.name = "Apa"
> A.save

Это сразу создаст и сохранит.

> User.create(:name => "Apa")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...