【问题标题】:How render to another view other than the default view如何渲染到默认视图以外的另一个视图
【发布时间】:2014-12-07 15:42:44
【问题描述】:

如果不是由我创建的另一个视图,例如 new_form.html.erb,我需要块 respond_to 不渲染到 new.html.erb

def new
    @user = User.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @user }
    end
  end

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2


    【解决方案1】:

    很简单。只要视图位于控制器的默认目录中:

    respond_to do |format|
      format.html render 'new'
      format.json { render json: @user }
    end
    

    如果不是,你需要告诉它是哪个目录:

    respond_to do |format|
      format.html render 'users/new'
      format.json { render json: @user }
    end
    

    更多文档在这里:http://guides.rubyonrails.org/layouts_and_rendering.html

    【讨论】:

      【解决方案2】:

      有很多方法可以做到这一点......

      ##FOR HTML CALLS
       format.html { render 'new'}
       format.html { render 'shared/new'}
      
      ##FOR JS CALLS
       format.js { render 'new'}
       format.js { render 'shared/new'}
       ##pass variable to the view
       format.js { render 'shared/new',:locals=>{:type=>"User"}}
      
      
      ##OR you can also try redirect in some rare cases WITHOUT respond_to block
      redirect_to users_path(params[:id])
      

      【讨论】:

        猜你喜欢
        • 2012-06-20
        • 2013-11-19
        • 1970-01-01
        • 1970-01-01
        • 2013-06-20
        • 1970-01-01
        • 2016-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多