考虑一个博客应用程序,其中包含用于创建新帖子的表单。有两个按钮,“保存”,“保存并继续编辑”,这将在保存后相应地重定向用户。
这是代码:
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
这是最好的方法吗,还是有其他方法来重构这个?
答案 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