调用redirect_to并且似乎没有任何新内容

时间:2014-12-22 02:01:42

标签: ruby-on-rails ruby

在一个控制器中调用redirect_to controller: 'messages', action: 'index'

在消息控制器中定义索引:

def index
  respond_to do |format|
    format.json { render :json => Message.all }
    format.html { }
  end
end

但是,似乎没有任何东西在浏览器级别重定向,即/ messages不显示。

思想?

来自日志:

Started POST "/users" for 127.0.0.1 at 2014-12-21 21:15:31 -0500
Processing by UsersController#create as */*
  Parameters: {"name"=>"testsg", "phone_number"=>"8593385412"}
  [1m[36m (4.0ms)[0m  [1mBEGIN[0m
  [1m[35mUser Exists (15.6ms)[0m  SELECT 1 AS one FROM "users" WHERE "users"."handle" = 'testsg' LIMIT 1
  [1m[36mUser Exists (0.0ms)[0m  [1mSELECT 1 AS one FROM "users" WHERE "users"."phone_number" = '18593385412' LIMIT 1[0m
  [1m[35mSQL (15.6ms)[0m  INSERT INTO "users" ("created_at", "handle", "phone_number", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id"  [["created_at", Mon, 22 Dec 2014 02:15:31 UTC +00:00], ["handle", "testsg"], ["phone_number", "18593385412"], ["updated_at", Mon, 22 Dec 2014 02:15:31 UTC +00:00]]
  [1m[36m (31.3ms)[0m  [1mCOMMIT[0m
Redirected to http://localhost:3000/messages
Completed 302 Found in 120ms (ActiveRecord: 68.0ms)

其余的控制器代码:

class MessagesController < ApplicationController
  before_action :subscribe, :only => :index

  # put your own credentials here
  account_sid = 'XXXXXXXXXX'
  auth_token = 'XXXXXXXXXX'

  # set up a client to talk to the Twilio REST API
  @@client = Twilio::REST::Client.new account_sid, auth_token

  def index
    respond_to do |format|
        format.json { render :json => Message.all }
        format.html { }
    end
  end

  def create
    params.has_key?(:Body) ? message = params[:Body] : message = params[:message]

    @@client.messages.create(
      from: 'XXXXXXXXXX',
      to: 'XXXXXXXXXX',
      body: "#{current_user.handle}: #{message}"
    )

    render :json => $pubnub.publish(
        :channel => 'pubnub_chat',
        :callback => lambda {|x|},
        :message => {
            #:user_id => current_user.id,
            :user_id => current_user.id,
            :message => "#{message}"
        }
    )
  end

  private

  def subscribe
    puts 'subscribing...'

    $pubnub.subscribe(
        :channel => 'pubnub_chat',
        :callback => $callback
    ) unless $pubnub.subscription_running?
  end
end

重定向来自:

def create
  @user = User.new(handle: params['name'], phone_number: params['phone_number'])
  if @user.save
      #render :json => [ @photo.to_jq_upload].to_json
      session[:user_id] = @user.id
      redirect_to controller: 'messages', action: 'index'
  else 
      #render :json => [{ :error => "An error was encountered while processing your photos. Please try again." }], :status => 304
  end
end

1 个答案:

答案 0 :(得分:0)

  

您使用了redirect_to操作:“course_page1”,格式:“html”和   回来哪个不对。如果它是一个重定向将正常工作   html请求但不是ajax。因此,如果您想要重定向,尽管事实   请求是一个ajax,使用可能是这样的

     

format.js {render:js =&gt; “window.location.href =   '#{course_page_path}''}}

Rails console shows view is rendered, but doesn't render in browser