gpt4 book ai didi

ruby-on-rails - 阻止 Rails 尝试提供模板/ActionView::MissingTemplate

转载 作者:行者123 更新时间:2023-12-02 15:57:28 25 4
gpt4 key购买 nike

我有一个简单的角轨应用程序,我正在尝试将其连接起来。

这是我的 Rails Controller :

class ItemsController < ApplicationController
respond_to :json, :html

def index
@items = Item.order(params[:sort]).page(params[:page]).per(15)
end

def show
@item = Item.where(params[:id])

if @item.empty?
flash[:alert] = "Item number #{params[:id]} does not exist"
else
respond_with @item do |format|
format.json { render :layout => false }
end
end
end
end

我不断收到 ActionView::MissingTemplate 错误,因为 Rails 一直尝试提供 erb 模板。我不要模板!!我只想要 json。有人可以给出明确的 respond_to/respond_with 语法,让我永远摆脱模板吗?

最佳答案

rails中有两种渲染方式,CMIIW

首先,默认情况下,它将渲染一个 View 模板,例如

  def show
end

然后它将渲染默认的显示 View 模板,例如:app/views/controller_name/show.html.erb

第二种是通过手动渲染,使用render方法

如果你只想响应json,那么:

class ItemsController < ApplicationController
def show
id = params.require(:id)
@item = Item.find_by(id: id)

if @item.nil?
render json: { message: "Item number #{id} does not exist", status: :not_found }
else
render json: @item
end
end
end

无需使用respond_to,它也已从最新的 Rails 中删除

关于render的rails指南非常有用,你可以阅读它here

关于ruby-on-rails - 阻止 Rails 尝试提供模板/ActionView::MissingTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27673105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com