Ruby on rails Groupon警戒轨道
我是rails新手,请耐心等待。我愿意听取关于如何以不同方式做到这一点的建议 我想在rails的一个布局中呈现两个单独的控制器动作 我有两个控制器:优惠券和MainAlert。在我的应用程序范围布局页面的主体中,我有一个Ruby on rails Groupon警戒轨道,ruby-on-rails,Ruby On Rails,我是rails新手,请耐心等待。我愿意听取关于如何以不同方式做到这一点的建议 我想在rails的一个布局中呈现两个单独的控制器动作 我有两个控制器:优惠券和MainAlert。在我的应用程序范围布局页面的主体中,我有一个,它根据请求加载优惠券或MainAlerts的索引操作(例如,localhost/优惠券或localhost/MainAlerts) 但是,我想加载优惠券、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提示。我仍然在尝试显示它。对不起,我对过滤器的看法是错误的。它应该是前过滤器,而不是后过滤器。太好了!祝你好运。