Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails表单发布到/新建而不是/创建?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails表单发布到/新建而不是/创建?

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

我有一个使用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 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| %>