Devise中的ActionController :: UnknownFormat ::在rails 4中的SessionsController#new

时间:2014-08-25 14:10:32

标签: ruby-on-rails ruby-on-rails-4 devise

我正在尝试很长时间并且谷歌关于我无法摆脱它的问题。任何人都可以解释为什么会发生这种情况以及如何解决它。

  def new
    self.resource = resource_class.new(sign_in_params)
    clean_up_passwords(resource)
    respond_with(resource, serialize_options(resource))
  end

错误位于以下行中 respond_with(resource,serialize_options(resource))

当我注册时,会发送确认链接。当我点击链接时出现上述错误,这是我的网址

http://localhost/users/sign_in.47

更新1

这是我对confirmmations_controller.rb的展示行动

  def show
    self.resource = resource_class.confirm_by_token(params[:confirmation_token])
    yield resource if block_given?

    if resource.errors.empty?
      set_flash_message(:notice, :confirmed) if is_flashing_format?
      respond_with_navigational(resource){ redirect_to after_confirmation_path_for(resource_name, resource) }
    else
      respond_with_navigational(resource.errors, status: :unprocessable_entity){ render :new }
    end
  end

def after_sign_up_or_sign_in_path_for resource
      User.where(id: resource.id).update_all(online: true)
      dashboard_path
    end

我需要在用户登录后将其更新为在线,所以我使用了资源。这让我感到很麻烦

2 个答案:

答案 0 :(得分:4)

在ApplicationController中,尝试添加此行(如果它不存在):

respond_to :html, :json

答案 1 :(得分:1)

主要问题是网址末尾的.47。这可能是您的用户ID。但需要找到它的来源。您的确认链接可能存在一些问题。

根据您更新的问题,请更改after_sign_up_or_sign_in_path_for方法中的以下一行。

将此行User.where(id:resource.id).update_all(online:true)更改为resource.update_attribute(:online,true)