首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Groupon Alert Rails

Groupon Alert Rails
EN

Stack Overflow用户
提问于 2011-03-11 19:57:54
回答 1查看 231关注 0票数 0

我是rails的新手,所以请耐心等待。我对如何以不同的方式做到这一点的建议持开放态度。

我想在rails的一个布局中渲染两个独立的控制器动作。

我有两个控制器:优惠券和MainAlert。在我的应用程序宽布局页面的主体中,我有一个<yield >,它根据请求加载优惠券或MainAlerts的索引操作(即,本地主机/优惠券或本地主机/MainAlerts)。

然而,我想要加载优惠券或MainAlert或其他控制器(取决于请求)的索引操作,但始终加载_form(用户创建新的警报)在最顶部的I将隐藏和显示。

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

如何加载控制器操作(从优惠券创建索引)和_form (新建?创建?)来自布局中的MainAlerts。如果用户点击提交,则需要将MainAlert表单的值保存到数据库中。

我对如何以不同的方式做到这一点的建议持开放态度。

感谢大家抽出时间与大家见面。=)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-12 07:16:13

我也是个新手,所以期待更多有趣的答案吧。

但是,解决此问题的一种方法是在应用程序控制器中使用before_filter,以便在为每个操作提供服务时始终设置一个新的MainCoupon实例变量。之后,您可以使用render 'maincoupon/ form‘在布局中呈现表单。表单应该可以按预期工作,因为need实例变量是由before_filter设置的。

它可能看起来像这样:

代码语言:javascript
复制
# application_controller.rb
class ApplicationController < ActionController::Base
  # other stuff
  before_filter :new_coupon


  # other stuff


  def new_coupon
    @maincoupon = MainCoupon.new
  end
end

在布局中,你可以拥有

代码语言:javascript
复制
<% = render 'maincoupons/form' %>

或者更好的是,使用HAML,只要:

代码语言:javascript
复制
= render 'maincoupons/form'

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

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

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

代码语言:javascript
复制
> A = User.new

将创建一个新用户,但不会将其保存到数据库中。你可以继续这样做:

代码语言:javascript
复制
> A.name = "Apa"
> A.save

这将立即创建并保存它。

代码语言:javascript
复制
> User.create(:name => "Apa")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5272616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档