Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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 链接重定向到";“显示”;操作,而不是routes.rb中指示的操作_Ruby On Rails - Fatal编程技术网

Ruby on rails 链接重定向到";“显示”;操作,而不是routes.rb中指示的操作

Ruby on rails 链接重定向到";“显示”;操作,而不是routes.rb中指示的操作,ruby-on-rails,Ruby On Rails,我正在使用RubyonRails2.3.4,我希望有一个链接,在单击时执行一个操作 routes.rb文件的相关部分如下所示: map.search_filter_relevance "/anuncios/buscar", :controller => 'announcements', :action => 'search_filter_relevance' <%= link_to 'M&Aacute;S RELEVANTES', search_filter_rel

我正在使用RubyonRails2.3.4,我希望有一个链接,在单击时执行一个操作

routes.rb文件的相关部分如下所示:

map.search_filter_relevance "/anuncios/buscar", :controller => 'announcements', :action => 'search_filter_relevance'
<%=  link_to 'M&Aacute;S RELEVANTES', search_filter_relevance_path %>
  def search_filter_relevance
    raise params.inspect
    unless params[:announcements].nil? or params[:announcements].empty?
      @announcements = params[:announcements].order_by_featured

    end
  end
我的视图(它是模型的索引页)如下所示:

map.search_filter_relevance "/anuncios/buscar", :controller => 'announcements', :action => 'search_filter_relevance'
<%=  link_to 'M&Aacute;S RELEVANTES', search_filter_relevance_path %>
  def search_filter_relevance
    raise params.inspect
    unless params[:announcements].nil? or params[:announcements].empty?
      @announcements = params[:announcements].order_by_featured

    end
  end
问题是,当我点击链接时,由于Show操作中的一些空值,我得到了一个错误!我根本没有访问那个动作…为什么要执行它

编辑:

以下是路由输出:

search_filter_relevance_announcements GET    /anuncios/search_filter_relevance(.:format)        {:controller=>"announcements", :action=>"search_filter_relevance"}
                        announcements GET    /anuncios(.:format)                                {:controller=>"announcements", :action=>"index"}
                                      POST   /anuncios(.:format)                                {:controller=>"announcements", :action=>"create"}
                     new_announcement GET    /anuncios/new(.:format)                            {:controller=>"announcements", :action=>"new"}
                    edit_announcement GET    /anuncios/:id/edit(.:format)                       {:controller=>"announcements", :action=>"edit"}
                         announcement GET    /anuncios/:id(.:format)                            {:controller=>"announcements", :action=>"show"}
                                      PUT    /anuncios/:id(.:format)                            {:controller=>"announcements", :action=>"update"}
                                      DELETE /anuncios/:id(.:format)                            {:controller=>"announcements", :action=>"destroy"}
                               search        /anuncios/buscar                                   {:controller=>"announcements", :action=>"search"}
                         power_search        /anuncios/buscar                                   {:controller=>"announcements", :action=>"power_search"}

当你进入控制台和

rake routes
你能粘贴所有与搜索相关的行以及anuncios吗

更新: 由于要在公告控制器中调用搜索过滤器(相关)操作,因此需要使用列出的路径搜索过滤器(相关)公告(路径)

<%=  link_to 'M&Aacute;S RELEVANTES', search_filter_relevance_announcements_path %>

另一个选项是手动指定控制器和操作

<%=  link_to 'M&Aacute;S RELEVANTES', {:controller => "announcements", :action => "search_filter_relevance"} %>
“公告”,:action=>“搜索\筛选\相关性”}%>

在routes.rb文件中尝试此代码

 map.resources :announcements,:collection=>{:search_filter_relevance=>:get}
并且,在routes.rb文件中注释下面的代码行

map.search_filter_relevance "/anuncios/buscar", :controller => 'announcements', :action => 'search_filter_relevance'

您可以发布您收到的错误的输出吗?您是否有其他以
“/anuncios”
开头的路由?如果您这样做,请确保“/anuncios/buscar”的定义高于,例如,
“/anuncios/:id”
我这样做了,但没有解决问题。如果我写了,我在视图中收到一个错误,因为搜索\过滤器\相关性\路径不再存在。我应该在那里写些什么呢?有趣的是,如果我在routes更改它的路径,它将调用我想要的操作,但我不想为此创建另一个视图。我只想单击一个链接按钮并在调用的操作中对表进行排序。我不想转到“anuncios/buscar”(搜索的url)之外的其他url。有什么想法吗?1)您可以使用RJ执行此操作,并在partial的帮助下重新呈现表格,还可以在搜索视图中重用partial。2) 您是否尝试过:render=>index在您的搜索\过滤器\相关性选项中。已使用我的其余答案进行更新。这并不能解决问题。我猜由于路由文件中的顺序,它正在接受“搜索”操作,而不是我想要的操作。我不明白为什么。所以你试了两段代码,但都没用?如果是的话,发生了什么,您是否有错误?没有什么。它只是继续访问“搜索”操作,而不是我想要的。我没有任何错误。它只是再次进行搜索。你能从日志中发布一个从开始到结束显示整个请求的操作吗?(如果愿意,可以直接从脚本/服务器窗口复制)