Rails:为response_to(速记)提供更好的语法

时间:2016-12-29 12:54:46

标签: ruby-on-rails ruby

我有以下用户设置控制器update方法的代码:

def update
  @user = ...
  if @user.update_attributes(params[:user])
    flash[:success] = 'Some success message.'
    respond_to do |format|
      format.html { redirect_to some_path }
      format.js   { head :ok }
    end
  else
    flash[:error] = 'Some error message.'
    render action: 'some action'
  end
end

我想知道是否有办法缩短整个方法?最好的选择是减少respond_to块的行数,如果有办法在那里使用一些简写语法。

1 个答案:

答案 0 :(得分:1)

如果您不支持js提交,则可以完全删除respond_to块。另请注意使用flash.now来显示渲染上的flash消息。

def update
  @user = ...
  if @user.update_attributes(params[:user])
    flash[:success] = 'Some success message.'
    redirect_to some_path
  else
    flash.now[:error] = 'Some error message.'
    render action: 'some action'
  end
end