Ruby on rails 3 在Rails 3中,simple_form_for方法如何知道是否在action属性中包含参数[:id]?
我是rails新手,我正试图弄清楚如何使表单上的[action]属性成为动态的,以便可以重用表单标记 在MVC.net中,这很容易,因为您通常指定:控制器和:操作 然而,在rails中(@my\u model)只有一个“简单的表单”方法 如果我浏览到/my_models/new,则操作属性为:Ruby on rails 3 在Rails 3中,simple_form_for方法如何知道是否在action属性中包含参数[:id]?,ruby-on-rails-3,forms,dry,Ruby On Rails 3,Forms,Dry,我是rails新手,我正试图弄清楚如何使表单上的[action]属性成为动态的,以便可以重用表单标记 在MVC.net中,这很容易,因为您通常指定:控制器和:操作 然而,在rails中(@my\u model)只有一个“简单的表单”方法 如果我浏览到/my_models/new,则操作属性为: action = "/my_models" action = "my_models/1" 但是如果我转到/my_models/1/编辑,动作属性是: action = "/my_models" ac
action = "/my_models"
action = "my_models/1"
但是如果我转到/my_models/1/编辑,动作属性是:
action = "/my_models"
action = "my_models/1"
如果我想创建一个新的操作来处理我的模型的帖子,并且仍然重用相同的_form.html.erb。。。这是怎么工作的?我想实际上是rails在做这件事 简而言之,它只是根据资源推断url,以及它是新的还是现有的 SimpleForm的FormBuilder继承自ActionView::Helpers::FormBuilder 您可以查看该代码 我想我不明白最后一部分。假设您想使用自定义操作而不是推断操作,您可以只对表单元素进行一部分,并对所有表单使用该部分 so_form.html.erb
<%= simple_form_for @my_object do |f| %>
<%= render 'form_elements' %>
<% end %>
<%= simple_form_for @my_object, :url => custom_url do |f| %>
<%= render 'form_elements' %>
<% end %>