2

私は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
4

3 に答える 3

5

基本的なコントローラーは次のようになります。

class TestsController < ApplicationController
  def show
  end
end

respond_toデフォルト ビュー (この場合は ) のみをレンダリングする場合は、ブロックは必要ありませんapp/views/tests/show.html.erb。ブロックは、respond_toより高度なニーズがある場合です。

于 2012-04-09T16:33:47.347 に答える
2

@klumpが言ったことは正しいです。基本的な足場を実行してみてください。これにより、コントローラー、モデル、およびビューが生成されます。このジェネレーターは、レールを学習しているときに最適です。

 rails g scaffold Test

また、 http://www.railsforzombies.comもチェックしてください。レールを学ぶのに最適な方法です。

于 2012-04-09T17:30:27.773 に答える
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を参照してください。

于 2012-04-09T16:43:30.200 に答える