我正在尝试学习Ruby on Rails并尝试手工编写一些代码,以便我了解它是如何工作的。
我做了这个微小的控制器:
class TestsController < ApplicationController
def test
def show
render :text => "Hi from TestsController!"
end
end
end
这就是我的观点:
<h3> Hello test </h3>
这是我的routes.rb片段:
resource :test
但它会出错:The action 'show' could not be found for TestsController
谢谢!
这是rake路线的输出:
home_index GET /home/index(.:format) home#index
root / home#index
test POST /test(.:format) tests#create
new_test GET /test/new(.:format) tests#new
edit_test GET /test/edit(.:format) tests#edit
GET /test(.:format) tests#show
PUT /test(.:format) tests#update
DELETE /test(.:format) tests#destroy
答案 0 :(得分:5)
基本控制器如下所示:
class TestsController < ApplicationController
def show
end
end
如果您只想呈现默认视图(在这种情况下:respond_to
),则不需要app/views/tests/show.html.erb
块。 respond_to
阻止是您有更高级需求的时候。
答案 1 :(得分:2)
@klump说的是对的。尝试运行一个基本的脚手架。这将为您生成控制器,模型和视图。当你学习rails时,这台发生器很棒。
rails g scaffold Test
同时查看http://www.railsforzombies.com,因为这是学习rails的好方法。
答案 2 :(得分:1)
当您希望操作响应多种格式时,可以使用respond_to
。客户端在HTTP Accept标头中设置所需的格式。
然后,您可以为每种格式指定不同的操作。
def show
respond_to do |format|
format.html { Rails.logger.debug "rendering show.html" }
format.xml { Rails.logger.debug "rendering show.xml" }
format.js { Rails.logger.debug "rendering show.js" }
end
end
有关更多示例,请参阅API。