【发布时间】:2015-06-15 20:13:36
【问题描述】:
我的 rails 应用中有一个名为 search 的自定义操作,它有两个对应的页面:
search.html.hamlsearch.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