不要在Rails根路由中发布表单

时间:2014-04-10 01:47:07

标签: ruby-on-rails routing rendering

我有一个只有一种方法的控制器:

index_controller.rb

def index
  # some code
end

表格:

index.html.erb

<%= form_tag :class => "form-inline signup" do %>
  <div class="form-group">
    <%= text_field_tag :url, nil, :class => "form-control", :placeholder => "URL do tópico" %>
  </div>
  <%= submit_tag "Enviar", method: :post, :class => 'btn btn-theme' %>
<% end %>

简单的根路线:

    root 'index#index'
    post '/', to: 'index#index'

问题在于,当我加载根页面时,表单会自动发布,而最好是在按钮调用时POST。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

您应该将post的代码移到另一个可以处理该代码的操作中。

post '/', :to => "index#submit"

然后,您可以在submit中定义IndexController操作来处理表单,而index操作将不再运行表单代码。