2015-11-02 78 views
1

我是Ruby on Rails的新手。我完成了教程和在线课程。我足够了解我的开发环境,创建表,控制器,视图等。然而,类和教程并没有真正向您展示您在真正的软件开发环境中可能需要使用的东西。Ruby on Rails - 可重复使用选择条目页

我正在将一段软件转换为Ruby on Rails平台。这是情况。我有一个销售员控制器,有销售员信息。然后我有一个处理客户端信息的客户端控制器。推销员有很多客户,客户有一个推销员。我已经编写了Salesman对象的REST架构。现在,我必须创建客户端。但是,在我能够掌握控制器中的新动作之前,我必须先选择一名推销员。这个选择的推销员页面将在许多其他场合需要,因为我将有其他控制器,例如佣金,采购订单等必须首先与销售员联系起来。在实际进入控制器中的新动作之前,如何继续编写这样的“临时选择”页面。我们可以定义自定义操作后,我只是redirect_to传递推销员id作为参数的新操作?

+4

把那一段代码在一个** **部分和渲染。部分文件正是用于此目的。 – Pavan

+0

好的,但我如何去了解事件的顺序。我的导航中的“添加新客户端”项应该去哪里?现在它转到new_accountant路线。它依次执行客户端控制器中的新操作。部分被调用/呈现的地方在哪里?然后,我如何将选定的推销员传递给新的或创建操作? – Dan

回答

0

您需要设计类似于多租户应用的应用。就你而言,销售人员就像一个租户。

这里是概念设计:

  1. 附加current_id 属性售货员 cattr_accessor :current_id, instance_writer: false, instance_reader: false

  2. 在所有模型属于销售人员,定义默认范围: default_scope { where(sales_man_id: SalesMan.current_id) }

  3. 确保当前的销售员在e之前被设置执行任何取决于销售人员的预先选择的操作。实现这个目标有多种方法,也取决于你想提供什么样的用户体验。几个选项:

    1. 只有在预先选择了推销员的情况下,才显示新客户端等导航。提供一个菜单选项来选择一个推销员。在该操作中设置SalesMan.current_id。

    2. 如果推销员在许多后续交易中会有所不同,您可能希望在采取行动之前通过控制器实施推销员选择(工作流程的第1步)。例如,当用户选择新建客户端导航选项时,before操作可以重定向到销售人员选择并设置标志。 SalesMan控制器选择的操作应重定向到新客户端操作并确保设置适当的标志(参数)以避免周期。定义一个新的控制器SalesManSelectionController,并将所有控制器的模型依赖于推销员。

+0

多租户应用程序(从我能读的内容来看)似乎对于我想要做的事来说有点太复杂。我所寻找的解决方案就是在需要首先设置推销员的控制器的任何新操作之前,我希望有一个推销员选择过程(可以对其进行排序和过滤的列表)。根据我的理解,我需要在客户端控制器中使用before_action,例如:before_action:select_salesman,only:[:new]。问题是.. select_salesman方法来自哪里?我在哪里写它?在帮手?在其中一个控制器中? – Dan

+0

对我评论的布局抱歉。我还没有掌握标签,这会使我的评论出现换行符等 – Dan

+0

你可以详细说明推销员的选择。是否像从下拉选择框中按名称选择人一样简单?如果是这样,那么你只需在你的表格中包含那个应该选择推销员的表格。 – korada