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の値をセットします。ここはもう少しいい方法がないかあと悩んでます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です