我是rails的新手,所以请耐心等待。我对如何以不同的方式做到这一点的建议持开放态度。
我想在rails的一个布局中渲染两个独立的控制器动作。
我有两个控制器:优惠券和MainAlert。在我的应用程序宽布局页面的主体中,我有一个<yield >,它根据请求加载优惠券或MainAlerts的索引操作(即,本地主机/优惠券或本地主机/MainAlerts)。
然而,我想要加载优惠券或MainAlert或其他控制器(取决于请求)的索引操作,但始终加载_form(用户创建新的警报)在最顶部的I将隐藏和显示。
groupon.com上的“通过电子邮件获取交易(+)”选项
如何加载控制器操作(从优惠券创建索引)和_form (新建?创建?)来自布局中的MainAlerts。如果用户点击提交,则需要将MainAlert表单的值保存到数据库中。
我对如何以不同的方式做到这一点的建议持开放态度。
感谢大家抽出时间与大家见面。=)
发布于 2011-03-12 07:16:13
我也是个新手,所以期待更多有趣的答案吧。
但是,解决此问题的一种方法是在应用程序控制器中使用before_filter,以便在为每个操作提供服务时始终设置一个新的MainCoupon实例变量。之后,您可以使用render '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'通常,您的新操作与一个视图相关联,用户在该视图中将信息输入到表单中。控制器中的新操作创建所需to类型的新对象@maincoupon = MainCoupon.new,该对象用作构建表单的“脚手架”。
当用户提交时,表单信息被打包并作为参数发送到create操作,该操作获取表单发送的信息并使用它创建所需类型的新对象。@maincoupon = MainCoupon.new(params[:maincoupon])
之后,它使用@maincoupon.save方法将其保存到数据库中。您可以自己在控制台(rails控制台)中尝试相应的模型方法。例如:
> A = User.new将创建一个新用户,但不会将其保存到数据库中。你可以继续这样做:
> A.name = "Apa"
> A.save这将立即创建并保存它。
> User.create(:name => "Apa")https://stackoverflow.com/questions/5272616
复制相似问题