【问题标题】:Call custom action using RABL gem? Rails 4 and RABL使用 RABL gem 调用自定义操作? Rails 4 和 RABL
【发布时间】:2015-06-15 20:13:36
【问题描述】:

我的 rails 应用中有一个名为 search 的自定义操作,它有两个对应的页面:

  • search.html.haml
  • search.json.rabl

search方法对应的表单如下所示:

= form_tag(listings_search_path) do
      .input-group.search-input-group
        %span#search-icon-addon.input-group-addon
          %span.glyphicon.glyphicon-search
        = text_field_tag :search, nil, :class => "form-control", :placeholder => "        Search for spaces.", "aria-describedby" => "search-icon-addon"
      #search-btns.col-md-12
        = button_tag :Search, :class => "btn btn-default search-btns", :value => "Search"
        = link_to 'listings/findnearme', :class => "btn btn-default search-btns" do
          %span.glyphicon.glyphicon-map-marker
          Find Near Me

还有路线:

post 'listings/search'

当我提交 html 响应的表单时,它工作得非常好,并按预期调用 search 方法:

# search method
def search
  @listings = Listing.search(params[:search].downcase)

  respond_with(@listings)
end

在我的控制器顶部(在任何操作之外),我有:

respond_to :xml, :json, :html

但是当我将.json 附加到网址时,它会调用show 操作。

如何从search 方法获得 JSON 响应?


TL;DR

调用“localhost:3000/listings/search”会转到search.html.haml并调用正确的操作search

调用“localhost:3000/listings/search.json”确实转到search.json.rabl,而是调用show操作。

Rails,Y U 没有调用自定义操作?

【问题讨论】:

    标签: ruby-on-rails ruby json rabl


    【解决方案1】:

    我怀疑您需要将 (:.format) 作为可选参数添加到您的路由中,或者设置请求类型标头。你可以在 jQuery 中尝试这个来调用 JSON 动作:

    $.ajax({url: '/listings/search', dataType: 'JSON', method: 'GET'})
    

    基本上,请求类型不是从 .json 中提取的,您需要创建正确的请求类型或通过路由设置它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多