在ruby on rails上,我可以在一个控制器中添加多个资源吗?

时间:2016-03-14 22:08:21

标签: ruby-on-rails ruby ruby-on-rails-3

在ruby on rails上,我可以在一个控制器中添加多个资源吗? 因为,如果我在一个控制器中添加多个资源,则在一个视图文件中会有多个Create,Update,index .. action和html.erb文件。那么我该怎么办?如果我想在一个控制器中设置多个资源?那些相同的名称动作如何在一个文件中成功存在?

1 个答案:

答案 0 :(得分:1)

你能做到吗?当然。你可以:

  1. 在方法名称上使用后缀/前缀:update_lectureupdate_speaker等。
  2. 使用不同的id字段和逻辑来查看要更新的字段,例如lecture_idspeaker_id
  3. 但是......你想这样做吗?

    只需考虑逻辑,稍微简化一下,默认情况下它是:

    [controller one] -> [model one]
    [controller two] -> [model two]
    [..etc..]
    

    但现在变成了:

                       /-> [model one]
    [controller one] --
                       \-> [model two]
    

    最终它会成为:

                       /-> [model one]
    [controller one] --
                       \-> [model two]
    
    
                      /-> [model three]
    [controller two] ---> [model four]
                      \-> [model five]
    
    
                                              /-> [model six]
    [controller three which was added later] -
                                              \-> [model three again because oops I forgot
                                                   that it was already in controller two]
    

    从控制器到底层模型有一个简单易懂的明显映射。这很好!当您拥有/speaker/42之类的网址时,可以轻松了解所涉及的方法和类。但是当你使用像你一样要求的方案时,所有的赌注都会被取消。 /speaker/42可能会在您的应用中以任何地方结束。

    还要记住,使用Ruby on Rails的一个巨大优势是,基本上每个RoR应用程序或多或少看起来都很相似。这很棒,因为如果我的同事正在度假,我可以解雇他的"他的"我以前从未见过的应用程序,并修复了客户刚刚调用的关键错误!

    在RoR中做一些单一的东西是有充分理由的。但这绝对不是其中之一; - )