Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:更好的响应语法(速记)_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails:更好的响应语法(速记)

Ruby on rails Rails:更好的响应语法(速记),ruby-on-rails,ruby,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 } en

对于用户设置控制器的
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\u to
块的行数,如果有一种方法可以使用一些速记语法。

如果不支持js提交,可以完全删除respond\u 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

事实上,我正计划提交JS表单,所以即使我现在删除它,我最终还是要将其添加回去,并将面临同样的问题。好吧,这本身不是一个“问题”。原始代码并不过分,而且似乎是合理的。干杯