繁体   English   中英

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

[英]In ruby on rails, can I add more than one resources in one controller?

在 ruby​​ on rails 中,我可以在一个控制器中添加多个资源吗? 因为,如果我在一个控制器中添加多个资源,那么一个视图文件中就会有多个创建、更新、索引..动作和 html.erb 文件。 如果我想在一个控制器中设置多个资源,我该怎么办? 那些同名动作如何成功存在于一个文件中?

你能做这个吗? 当然。 您可以:

  1. 在方法名称上使用后缀/前缀: update_lectureupdate_speaker等。
  2. 使用不同的ID字段和逻辑,看看哪一个更新,如lecture_idspeaker_id

但是……你想这样做吗?

想想逻辑,稍微简化一下,默认情况下它是:

[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这样的 URL 时,它可以很容易地理解所涉及的方法和类。 但是当你使用你所要求的方案时,所有的赌注都没有了。 /speaker/42可以在你的应用程序的任何地方结束。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM