Ruby on rails Rails表单发布到/新建而不是/创建?
我有一个使用Rails 3.1.x应用程序的简单表单视图:Ruby on rails Rails表单发布到/新建而不是/创建?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个使用Rails 3.1.x应用程序的简单表单视图: <%= form_for(:mymodel) do |f| %> <% if @mymodel.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(@mymodel.errors.count, "error") %> prohibited this model from being
<%= form_for(:mymodel) do |f| %>
<% if @mymodel.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@mymodel.errors.count, "error") %> prohibited this model from being saved:</h2>
<ul>
<% @mymodel.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
Amount:
<%= f.text_field :count %><br /><br />
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
禁止保存此模型:
数量:
点击此处提交时,它将发布到
/mymodels/new
。如何强制它转到mymodels\u controller.rb的右侧创建操作?选项1:遵循约定,为帮助程序的表单提供新的未保存记录。您可能已经在控制器的@mymodel
操作上设置了此类对象。因此,以下代码段应该可以很好地工作:
<%= form_for(@mymodel) do |f| %>
选项2:明确说明您的URL和方法:
<%= form_for(:mymodel, :url => create_mymodel_path, :method => :post) do |f| %>
create_mymodel_path,:method=>:post)do | f |%>
我可以用@mymodel
解决这个问题,但是值得注意的是@mymodel
应该在控制器中设置。因此,它在控制器中看起来类似于def new@mymodel=mymodel.new()end
,然后+1感谢您提供了解决此问题的正确方法。互联网上的其他人似乎都认为在路由中使用match
或类似方法。rb
是解决方案。我在寻找一个真正的解决办法,你已经给出了。您可能希望扩展您的答案以包含我之前评论的信息,因为您可能已经在@mymodel
上有一个初始化的空对象,如果它们还没有初始化,则不会向它们显示如何初始化,并且我的评论可能会被忽略,并且没有使用换行符格式化。
<%= form_for(:mymodel, :url => create_mymodel_path, :method => :post) do |f| %>