Ruby - 编写基本控制器

时间:2012-04-09 16:26:57

标签: ruby-on-rails ruby

我正在尝试学习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

3 个答案:

答案 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