没有路线匹配[POST]“/”

时间:2016-07-12 19:47:05

标签: ruby-on-rails ajax ruby-on-rails-4

在我看来,尝试向单独的控制器提交AJAX请求时遇到了一些麻烦。

我的AJAX请求表单如下所示: 我也试过sites_search_results_index_path我的路线文件说的是正确的路线。

查看:

<div class="pull-left col-md-5">
  <%= form_tag url: sites_search_results, remote: true do %>
    <div class="input-group">
      <%= content_tag :span, class: "input-group-btn" do %>

        <%= button_tag type: "button", class: "btn btn-default dropdown-toggle", data: { toggle: "dropdown" } do %>
          <%= content_tag :span, "", class: "caret" %>
        <% end %>

        <%= content_tag :ul, class: "dropdown-menu" do %>
          <li class="btn btn-default">Domain</li>
          <li class="btn btn-default">CLW</li>
        <% end %>
      <% end %>

      <%= hidden_field_tag "search_by", "Domain" %>
      <%= content_tag :span, class: "input-group-addon", id: "search_view" do %>
        Filter
      <% end %>

      <%= text_field_tag "search_for", "", :class => "form-control" %>
      <%= content_tag :span, class: "input-group-btn" do %>
        <%= button_tag "Search", class: "btn btn-default" %>
      <% end %>

    </div>
  <% end %>
</div>

控制器:

class SitesSearchResultsController < ApplicationController

  def index

    field = "Domain"

    @results = Domain.where()

    respond_to do |format|
      format.js # do ajax action
    end
  end

end

路线:

resource :sites_search_results do
  post 'index'
end
# also tried with no result:
#post "sites_search_results/index"

rake routes有:

sites_search_results POST   /sites_search_results/index(.:format)            sites_search_results#index
                     POST   /sites_search_results(.:format)                  sites_search_results#create

结果是:

undefined local variable or method `sites_search_results'

任何想法会导致什么?我见过其他人有这个问题,但我已经设置了根路径进入状态页面。而且我没有看到任何试图发布到root的内容。如果需要其他任何帮助,请告诉我。并提前感谢!

2 个答案:

答案 0 :(得分:0)

看起来form_tag网址应为:

.one-fourth {
    width: 31%;
    float: left;
}

@media only screen and (max-width: 767px) and (min-width: 480px){

    .one-half, .one-third, .one-fourth {
        margin: 0 0 0 3.44%;
        width: 33%;
        float: left;
    }

}

或者

<%= form_tag url: sites_search_results_path, remote: true do %>

从命令行运行'rake routes',看看你是否有'sites_search_results'或'sites_search_results_index'。我在猜测前者。

另外,请尝试从以下位置更改路线定义:

<%= form_tag url: sites_search_results_url, remote: true do %>

简单来说,

resource :sites_search_results do
  post 'index'
end

最后,你需要使用POST吗?索引方法通常是GET,在这种情况下,您将发布到get。

答案 1 :(得分:0)

您必须在form_tag中提供方法,如下所示: -

<%= form_tag url: sites_search_results,:method=>'post', remote: true do %>