如何组织依赖于提交值的重定向

时间:2013-06-11 07:04:06

标签: ruby-on-rails refactoring

考虑一个博客应用程序,其中包含用于创建新帖子的表单。有两个按钮,“保存”,“保存并继续编辑”,这将在保存后相应地重定向用户。

这是代码:

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

这是最好的方法吗,还是有其他方法来重构这个?

1 个答案:

答案 0 :(得分: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