Ruby on rails Groupon警戒轨道

Ruby on rails Groupon警戒轨道,ruby-on-rails,Ruby On Rails,我是rails新手,请耐心等待。我愿意听取关于如何以不同方式做到这一点的建议 我想在rails的一个布局中呈现两个单独的控制器动作 我有两个控制器:优惠券和MainAlert。在我的应用程序范围布局页面的主体中,我有一个,它根据请求加载优惠券或MainAlerts的索引操作(例如,localhost/优惠券或localhost/MainAlerts) 但是,我想加载优惠券、MainAlert或其他控制器(取决于请求)的索引操作,但始终在“我将隐藏并显示”页面的最顶部加载_表单(用户在其中创建新警

我是rails新手,请耐心等待。我愿意听取关于如何以不同方式做到这一点的建议

我想在rails的一个布局中呈现两个单独的控制器动作

我有两个控制器:优惠券和MainAlert。在我的应用程序范围布局页面的主体中,我有一个
,它根据请求加载优惠券或MainAlerts的索引操作(例如,localhost/优惠券或localhost/MainAlerts)

但是,我想加载优惠券、MainAlert或其他控制器(取决于请求)的索引操作,但始终在“我将隐藏并显示”页面的最顶部加载_表单(用户在其中创建新警报)

groupon.com上的“通过电子邮件(+)获取交易”选项

如何从布局中的MainAlerts加载控制器操作(优惠券索引)和_表单(新建?创建?)。如果用户点击submit,则需要将MainAlerts表单的值保存到DB

我愿意听取关于如何以不同方式做到这一点的建议


谢谢大家抽出时间。=)

我也是个新手,所以期待更多漂亮的答案

但解决这一问题的一种方法是在应用程序控制器中使用before_过滤器,以便在每次操作都得到服务时始终设置一个新的maincoup实例变量。之后,您可以使用render“main优惠券/form”在布局中呈现表单。表单应该按预期工作,因为需要实例变量是由before_过滤器设置的

它可能看起来像这样:

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


  # other stuff


  def new_coupon
    @maincoupon = MainCoupon.new
  end
end
> A.name = "Apa"
> A.save
通常,您的新操作与一个视图相关联,用户在该视图中将信息输入表单。控制器中的新操作将创建所需to类型的新对象
@maintucon=maintucon.new
,用作构建表单的“脚手架”

当用户提交时,表单信息被打包并作为参数发送到create操作,该操作获取从表单发送的信息,并使用它创建所需类型的新对象。
@maincoup=maincoup.new(参数[:maincoup])

之后,它使用
@maincupon.save
方法将其保存到数据库中。 您可以在控制台(rails控制台)中自己尝试相应的模型方法。 例如:

> A = User.new
将创建一个新用户,但不将其保存到数据库。 你可以这样继续:

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


  # other stuff


  def new_coupon
    @maincoupon = MainCoupon.new
  end
end
> A.name = "Apa"
> A.save
这将立即创建并保存它

> User.create(:name => "Apa")

谢谢你的回复,杰斯珀。我在尝试显示它时遇到以下错误。这个错误在我的整个尝试中一直存在。”app/views/simplelerts/_form.html.erb,其中第#1行出现:NilClass:Class的未定义方法'model_name',顺便说一句,我一直遵循您的建议,直到HAML提示。我仍然在尝试显示它。对不起,我对过滤器的看法是错误的。它应该是前过滤器,而不是后过滤器。太好了!祝你好运。