2

新しい投稿を作成するためのフォームを備えたブログ アプリケーションを考えてみましょう。「保存」、「保存して編集を続行」の 2 つのボタンがあり、保存後にユーザーを適宜リダイレクトします。

これはコードです:

def create
  @post = current_user.posts.build(params[:post])
  if @post.save
    if params[:commit] == "Create & continue editing"
      redirect_to edit_admin_post_path(@post), :notice => "Post record has been created"
    else
      redirect_to admin_posts_path, :notice => "Post record has been created"
    end
  else
    flash.now[:error] = "Post record has some validation errors"
    render :new
  end
end

これはこれを行うための最良の方法ですか、それともこれをリファクタリングする他の方法はありますか?

4

1 に答える 1

3

多分このようなもの:

ビューで:

<%= submit_tag 'Save', name: 'save' %>
<%= submit_tag 'Save and continue editing', name: 'save_and_edit' %>

コントローラーで:

def create
  @post = current_user.posts.build(params[:post])
  if @post.save
    redirect_to(params[:commit] == 'save' ? admin_posts_path : edit_admin_post_path(@post), notice: "Post record has been created")
  else
    flash.now[:error] = "Post record has some validation errors"
    render :new
  end
end
于 2013-06-11T08:12:19.423 に答える