backbone-rails:重定向到控制器动作

时间:2014-05-18 02:34:58

标签: javascript ruby-on-rails backbone.js ruby-on-rails-4 backbone-rails

我第一次使用rails-backbone gem。我不得不怀疑如何使用骨干重定向。按照github页面提供的步骤,一切正常。但当我看到我的控制器时,它在创建动作

中包含以下行
respond_to do |format|
      if @login.save
        format.html { redirect_to @login, notice: 'Post was successfully created.' }
        format.json { render action: 'show', status: :created, location: @login }

效果很好,但我可以看到,对于 json对象,它呈现show动作,因此无法重新加载页面,因为它需要 ID作为属性,我可以使用用于显示的静态页面是一个解决方案,但我需要它将其重定向到显示操作而不是呈现,就像时一样格式为html 。怎么办呢?

这是我完整的控制器:

class LoginsController < ApplicationController
 before_action :set_login, only: [:show]

  def index
  end

  def new
      @login = Login.new
  end
  def show

  end
    def create
            @login = Login.new(login_params)

    respond_to do |format|
      if @login.save
        format.html { redirect_to @login, notice: 'Post was successfully created.' }
        format.json { render action: 'show', status: :created, location: @login }
      else
        format.html { render action: 'new' }
        format.json { render json: @login.errors, status: :unprocessable_entity }
      end
    end
  end

  private
  def set_login
      @login = Login.find(params[:id])
    end
    def login_params
            params.require(:login).permit(:email, :password)
    end
end

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。 1)在你的控制器而不是渲染json对象,只需在views / logins下创建create.js.erb然后将js代码重定向到页面。它应该是这样的,

create.js.erb:

window.location.href = <%= users_path(@user) %>

2)成功创建记录后,您可以在骨干回调中执行此窗口重定向js代码。请参考这个骨干网站了解如何成功回调。