Rails - ActionController :: UnknownFormat保存时未使用Devise登录

时间:2014-03-18 13:26:39

标签: ruby-on-rails-4 devise

我的项目背后的想法是让用户能够在Members模型中登录和管理包含成员容器的等待列表。除了将新成员添加到等待名单之外,所有内容都要求用户登录。

在我的成员控制器顶部,我有以下内容:

skip_before_filter :authenticate_user!, :only => [:new, :create]

允许任何人创建memebers,但是在未登录时创建成员时我收到以下错误:

  

的ActionController :: UnknownFormat

在成员控制器的以下行中。

respond_to do |format|

我的创建操作如下所示:

def create
@member = Member.new(member_params)
if !user_signed_in?
  @member.date_added = Time.now
  @member.status = 1
  respond_to do |format|
    if @member.save
      redirect_to(:back)
    else
      format.html { render action: 'new' }
      format.json { render json: @member.errors, status: :unprocessable_entity }
    end
  end
else
  respond_to do |format|
    if @member.save
      format.html { redirect_to @member, notice: 'Member was successfully created.' }
      format.json { render action: 'show', status: :created, location: @member }
    else
      format.html { render action: 'new' }
      format.json { render json: @member.errors, status: :unprocessable_entity }
    end
  end
end
end

登录后一切正常,但是只在未登录时才会引发此错误。任何帮助都非常感谢

2 个答案:

答案 0 :(得分:0)

我认为当请求是JSON时,问题出在redirect_to(:back)中。

尝试将其替换为:

#redirect_to(:back)
format.html { redirect_to(:back) }
format.json { render ..............., status: :created }

答案 1 :(得分:0)

您忘记为redirect_to(:back)提供格式。试试这个

respond_to do |format|
    if @member.save
      format.html { redirect_to(:back) }
    else
     ................