gpt4 book ai didi

ruby-on-rails - Rails 路由到 XML/JSON 而没有 View 变得疯狂

转载 作者:数据小太阳 更新时间:2023-10-29 07:40:13 24 4
gpt4 key购买 nike

我有一个神秘的问题。在一个非常简单的 Ruby 应用程序中,我有三个类:Drivers、Jobs 和 Vehicles。所有三个类都只包含 Id 和 Name。所有三个类都具有相同的#index 和#show 方法,并且仅以 JSON 或 XML 形式呈现(事实上,这对于它们的所有 CRUD 方法都是正确的,除了名称之外,它们在所有方面都是相同的)。没有意见。例如:

def index
@drivers= Driver.all
respond_to do |format|
format.js { render :json => @drivers}
format.xml { render :xml => @drivers}
end
end

def show
@driver = Driver.find(params[:id])
respond_to do |format|
format.js { render :json => @driver}
format.xml { render :xml => @driver}
end
end

这些模型同样简约,只包含:

class Driver< ActiveRecord::Base
validates_presence_of :name
end

在 routes.rb 我有:

map.resources :drivers
map.resources :jobs
map.resources :vehicles

map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'

我可以在所有三个类上执行 POST/create、GET/index 和 PUT/update,GET/read 也可以正常工作,直到我安装了“有许多多态”ActiveRecord 插件并添加到 environment.rb:

require File.join(File.dirname(__FILE__), 'boot')
require 'has_many_polymorphs'
require 'active_support'

现在,对于三个类(class)中的两个,我无法再阅读了。如果我转到 localhost:3000/drivers 它们都很好地在 XML 中列出但是如果我转到 localhost:3000/drivers/3 我得到一个错误:

Processing DriversController#show (for 127.0.0.1 at 2009-06-11 20:34:03) [GET]
Parameters: {"id"=>"3"}
[4;36;1mDriver Load (0.0ms)[0m
[0;1mSELECT * FROM "drivers" WHERE ("drivers"."id" = 3) [0m

ActionView::MissingTemplate
(Missing template drivers/show.erb in view path app/views):
app/controllers/drivers_controller.rb:14:in `show'

...etc

紧随其后的是另一个意外错误:

Processing ApplicationController#show (for 127.0.0.1 at 2009-06-11 21:35:52)[GET]
Parameters: {"id"=>"3"}
NameError (uninitialized constant ApplicationController::AreaAccessDenied):

...etc

这是怎么回事?为什么相同的代码适用于一个类而不适用于其他两个类?为什么它试图在 ApplicationController 上执行#view?

我发现,如果我为这三个类中的每一个创建一个简单的 HTML View ,它们就可以正常工作。我向每个类(class)添加:

format.html # show.html.erb

有了这个,转到 localhost:3000/drivers/3 以 HTML 格式呈现该项目,我在日志中没有收到任何错误。但是,如果将 .xml 附加到 URL,其中两个类将再次失败(错误消息与之前相同),而其中一个类将按预期输出 XML。更奇怪的是,在两个失败的类上,当将 .js 添加到 URL(以触发 JSON 呈现)时,我得到的是 HTML 输出!

这可能与“有许多多态”插件有关吗?我听说有人在安装后遇到路由问题。从 environment.rb 中删除“有很多多态”和“主动支持”(并重新启动服务器)似乎没有任何区别。然而,我的问题是在安装后开始的。我已经在这个问题上花了好几个小时了,开始有点绝望了,谷歌几乎没有找到任何信息,这让我怀疑我一定是错过了一些基本的东西。感激地收到任何启示或提示!

JS

最佳答案

如果你安装了很多 polymorphs 作为插件,你必须从 vendor/plugins 中移除它,而不是从 environment.rb 中移除。你能不能请 rm -rf 那个插件然后再试一次。

关于ruby-on-rails - Rails 路由到 XML/JSON 而没有 View 变得疯狂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/983661/

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