【发布时间】:2016-05-06 23:59:19
【问题描述】:
我有一个客户控制器。在新动作中,我重定向到另一个页面,该页面属于页面控制器
class CustomersController < ApplicationController
def new
redirect_to register_path
end
是否可以像这样在注册操作中创建对象?
class PagesController < ApplicationController
def registration
@customer = Customer.new
end
end
【问题讨论】:
-
当然可以,但不是很安静
-
从技术上讲,您可以在任何地方实例化对象,尽管它可能不遵循一些最佳实践,如 REST(如 @kingguy 建议的那样)。你想做什么?您是否尝试将
/customers/new路由更改为/registration或其他什么?因为如果是这种情况,你应该调整config/routes.rb。 -
我无法真正在客户控制器中创建对象,因为我试图从注册视图呈现新操作,我将新操作视图作为部分视图。注册视图的目的是包含用于创建选项卡的代码,当用户单击适当的选项卡时,它将呈现适当的注册视图
-
如果我没看错的话,我通常会做的是在部分选项卡中包含 HTML,并将 (
render) 部分包含在customers/new.html.erb 中。其他每个选项卡都可能是不同的控制器/操作,它们每个都会<%= render 'application/special_tabs' %>。除非……是浏览器中单个 HTML 页面中包含的所有选项卡的内容吗?然后当用户单击不同的选项卡时,您只是在使用 JavaScript 隐藏/显示部分而不加载页面? -
好吧,我这样做的方式是创建一个中间页面调用注册页面,这是页面控制器中的注册操作,然后我生成 html 代码以在该注册文件中创建 2 个选项卡,然后呈现新操作当用户单击选项卡时,将每种类型的用户作为每个选项卡的内容。我不确定这是否是一个好方法,因为我无法弄清楚将对象通过注册页面传递到每个新部分的逻辑
标签: ruby-on-rails ruby object model-view-controller controller