【问题标题】:backbone-rails: redirection to a controller action主干导轨:重定向到控制器操作
【发布时间】:2014-07-06 05:58:30
【问题描述】:

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

中包含以下行
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 对象,它呈现显示动作,因此无法重新加载页面,因为它需要 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

【问题讨论】:

  • 您无法重新加载是因为您使用 JSON 的方式,而不是因为 JSON 响应没有重定向。 JSON发生在后台,即AJAX,所以重定向/不重定向它不会改变你得到的响应中的任何东西。如果您愿意,您可以使用收到的 JSON 响应在 Javascript 中重定向用户。
  • 我猜也一样。应该发生重新加载,我使用对象的方式可能有错误。
  • 无论如何我已经更新了问题,看看你是否在我的控制器上发现任何错误
  • 抱歉,我不是骨干专家,您需要对 HTML/JS 进行更改才能使其正常工作。控制器看起来不错。
  • 好的thanx寻求帮助.. :)

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


【解决方案1】:

有很多方法可以做到这一点。 1)在您的控制器中,而不是呈现 json 对象,只需在视图/登录下创建 create.js.erb,然后将 js 代码用于重定向页面。应该是这样的,

create.js.erb:

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

2) 成功创建记录后,您可以在主干回调中执行此窗口重定向js代码。成功回调请参考本骨干官网。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    相关资源
    最近更新 更多