Rails模板缺少渲染json

时间:2016-04-11 13:34:54

标签: ruby-on-rails

实际上我使用rails作为我的REST API,我需要将我的对象转换为json但是当我尝试时我得到了这个错误:

            <h1>Template is missing</h1>
        <p>Missing template firms/show, application/show with {:locale=&gt;[:en], :formats=&gt;[:html, :text, :js, :css, :ics, :csv, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :handlers=&gt;[:erb, :builder, :arb, :jbuilder]}. Searched in:
  * &quot;/Users/allan/Desktop/Work/back/app/views&quot;
  * &quot;/Library/Ruby/Gems/2.0.0/gems/activeadmin-0.6.0/app/views&quot;
  * &quot;/Library/Ruby/Gems/2.0.0/gems/kaminari-0.16.3/app/views&quot;
  * &quot;/Library/Ruby/Gems/2.0.0/gems/devise_invitable-1.5.5/app/views&quot;
  * &quot;/Library/Ruby/Gems/2.0.0/gems/devise-3.5.4/app/views&quot;
</p>

这是我的代码

 def show
        firm= Firm.find_by_subdomain(params[:subdomain])
        if firm.present?
          respond_to do |format|
            @firm = firm
            format.json { render :json => @firm.to_json }
          end
        end
      end

我希望有人可以帮助我:)。

解:

  def show
    render json: Firm.find_by_subdomain(current_subdomain)
  end

谢谢

2 个答案:

答案 0 :(得分:0)

在查询路线时,尝试在查询结束时添加.json。如果没有这个,它将尝试渲染html,它将搜索您的案例中可能不存在的视图文件。

答案 1 :(得分:0)

模板丢失意味着您要求提供html视图,而不是执行json请求。

如果您想要始终返回json格式而不管格式参数如何,请执行以下操作:

before_action :set_default_response_format

protected

def set_default_response_format
  request.format = :json
end

@source:Rails 4 - How to render JSON regardless of requested format?