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