23

次のようなコマンドを使用してRailsの足場を生成する場合、rails g scaffold Thingその煩わしさを回避する方法はありますか

respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @things }
end

あなたのコントローラーに何か?

Railsでクラスを教えようとしています。まず、Railsでスキャフォールドを生成してもらいたいのですが、すべてのjsonフォーマットでは、必要以上に複雑になっています。彼らがこのようなコントローラーを作成する足場を生成できれば、私ははるかに幸せになるでしょう:

class ThingsController < ApplicationController

  def index
    @things = Thing.all
  end

  def show
    @thing = Thing.find(params[:id])
  end

  def new
    @thing = Thing.new
  end

  def edit
    @thing = Thing.find(params[:id])
  end

  def create
    @thing = Thing.new(params[:thing])
      if @thing.save
        redirect_to @thing, notice: 'Thing was successfully created.'
      else
        render: "new" 
      end
    end
  end

  def update
    @thing = Thing.find(params[:id])
      if @thing.update_attributes(params[:thing])
        redirect_to @thing, notice: 'Thing was successfully updated.'
      else
        render: "edit" 
      end
    end
  end

  def destroy
    @thing = Thing.find(params[:id])
    @thing.destroy
    redirect_to things_url
  end
end
4

4 に答える 4

35

jbuilderあなたの宝石をコメントアウトするGemfileと、respond_toブロックは生成されません。

于 2014-06-08T09:35:12.750 に答える
13

ファイルのクローンを作成するだけです

https://github.com/rails/rails/blob/v5.2.2/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb

あなたに

lib/rails/generators/rails/scaffold_controller/templates/controller.rb

アプリケーションのパスを作成し、必要なものをカスタマイズします。また、スキャフォールディング用に独自のジェネレーターを作成することもできます(http://guides.rubyonrails.org/generators.html)。

于 2012-12-25T05:00:54.063 に答える
1

私はあなたが機会を逃していると思います。一つには、あなたは非標準のRailsを教えているので、生徒が自分のインストールで通常のバージョンを見ると混乱する可能性があります。

さらに重要なのは、コントローラーがそのようにフォーマットされているという理由です。RailsはRESTに重点を置いており、複数のデータ形式を介したリソースへのアクセスを促進します。最近の多くのアプリは、サーバーでレンダリングされる低速のhtml / erb応答を重視せず、jsonAPIを採用しています。これはあなたのOPから1年余りであり、クラスでの時間は限られていることを私は理解しています。私はあなたがrespond_toに手を振って、それがいくつかの将来の可能性のためにあなたを準備していると彼らに言うことができると思います。

于 2014-02-28T05:15:51.263 に答える
0

ここで、JSON応答がrailsジェネレーターのテンプレートに直接コード化されていることに気付くでしょう。

https://github.com/rails/rails/blob/master/railties/lib/rails/generators/rails/scaffold_controller/templates/controller.rb

足場ジェネレーターは、R​​ailsスタックがどのように機能するかを説明し、さらに教育することを目的としていることに注意してください。コントローラーを編集して、ニーズに合わせてさまざまな形式を提供する方法を示しています。

于 2012-12-25T05:08:34.460 に答える