我第一次使用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
答案 0 :(得分:0)
有很多方法可以做到这一点。 1)在你的控制器而不是渲染json对象,只需在views / logins下创建create.js.erb然后将js代码重定向到页面。它应该是这样的,
create.js.erb:
window.location.href = <%= users_path(@user) %>
2)成功创建记录后,您可以在骨干回调中执行此窗口重定向js代码。请参考这个骨干网站了解如何成功回调。