Enr*_*ent 1 ruby ruby-on-rails ruby-2.0 ruby-on-rails-4
我正在按照这个官方指南来了解Rails,它建立了一个博客,我注意到它似乎并不完整.
在第5.13点"使用部分来清理视图中的重复",它建议采用表单创建一个帖子并在部分内部进行编辑,因为两者都非常相似.它确实谈到了两种形式使用的路线的细微差别,但它表示这是一个将在后面解释的问题
除了form_for声明之外的所有内容都保持不变.form_for如何在构建表单时找出正确的操作和方法属性将在稍后解释.[...]
但我注意到指南从未真正解释过如何做到这一点.(也许他们只是忘了......?)
有人可以解释我如何解决这个问题?
如果您遵循Rails约定,则无需执行任何操作.这在文档(http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for)中有详细解释.
但是,如果传递给form_for的记录是资源,则可以进一步简化,即它对应于一组RESTful路由,例如使用config/routes.rb中的resources方法定义.在这种情况下,Rails将简单地从记录本身推断出适当的URL.
基本上,你需要:
form_for帮手routes.rbfi中定义了资源resources :posts因此,如果你有form_for(@post),Rails将通过检查是否@post是新记录来确定使用哪条路由.
如果您想要一个完整的示例,只需创建一个新的rails应用程序并创建任何支架:
rails g scaffold User name
您可以检查Rails是否已将表单放入部分:app/views/users/_form.html.erb.
如果你想深入挖掘,请检查源代码.有趣的部分是在这个文件中.
action, method = object.respond_to?(:persisted?) && object.persisted? ? [:edit, :patch] : [:new, :post]
Run Code Online (Sandbox Code Playgroud)
在我们的示例中,@post分配给object.Rails充满了这样的捷径,有时学习它们的最佳方式是查看源代码.如果您熟悉Ruby,您通常会发现源代码是对文档和指南的更好解释.
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |