地方でリモートワーク

プログラミング、先物、fx,仮想通貨なんでもやります

Railsでプレビュー画面を作る方法

スポンサーリンク

Railsキャストにも取り上げられています。 Railsキャストの手法だと現在のviewにプレビュー画面を表示させていますが、異なるviewに表示してみたいと思います。

  def create
    @page = Page.new(create_params)
    if params[:preview_button]
      render action: :show
    elsif @page.valid?
      @page.save!
      flash[:notice] = "Create!"
      redirect_to action: :index
    else
      flash.now[:alert] "Not create!"
      render action: :new
    end
  end

  def update
    if params[:preview_button]
      @page.title = params[:page][:title]
      @page.body = params[:page][:body]
      render action: :show
    elsif @page.valid?
      @page.save!
      flash[:notice] = "Create!"
      redirect_to action: :index
    else
      flash.now[:alert] "Not create!"
      render action: :new
    end
  end

  private
  def create_params
    params.require(:page).permit(:title, :body)
  end
<%= submit_tag 'Preview', :name => 'preview_button', formtarget: "_blank" %>

name属性でpreview_buttonを与えています。これでsubmitするとparams[:preview_button]が渡せるので,controllerでparams[:preview]で捕捉します。 createアクションではインスタンスを生成して、paramsをセットします。 updateでは各attributeにparamsの値をセットします。ここはもう少しいい方法がないかあと悩んでます。