当我调用Update方法时,我收到以下错误。
ActionController::UnknownFormat (ActionController::UnknownFormat):
app/controllers/devise/custom/registrations_controller.rb:21:in `update_avatar'
这是违规控制者:
class Devise::Custom::RegistrationsController < Devise::RegistrationsController
respond_to :html, :js
def update_avatar
@user = current_user
if @user.update(user_params)
respond_to do |format|
format.js { render 'update_avatar'}
flash[:notice] = "Updated user"
end
else
render 'edit'
end
end
protected
def user_params
params.require(:user).permit(:avatar)
end
end
奇怪的是,我在其他控制器上使用这种方法没有任何障碍,但在这里它落在respond_to线上。
任何人都可以光明吗?谢谢!
日志
由Devise :: Custom :: RegistrationsController#update_avatar as处理 参数:{&#34; utf8&#34; =&gt;&#34;✓&#34;,&#34; remotipart_submitted&#34; =&gt;&#34; true&#34;, &#34; authenticity_token&#34; = GT;&#34; reTaOwTtvbI + IPYq1nvLWl0blVOmaSu / o5VpfGziguo =&#34 ;, &#34; X-Requested-With&#34; =&gt;&#34; IFrame&#34;,&#34; X-Http-Accept&#34; =&gt;&#34; text / javascript, application / javascript,application / ecmascript, application / x-ecmascript, / ; Q = 0.01&#34 ;, &#34;用户&#34; = GT; {&#34;化身&#34; = GT;#, @original_filename =&#34; translate.jpg&#34;,@ content_type =&#34; image / jpeg&#34;, @headers =&#34; Content-Disposition:form-data;命名= \&#34;用户[化身] \&#34 ;; filename = \&#34; translate.jpg \&#34; \ r \ nConContent-Type:image / jpeg \ r \ n&#34;&gt;}}
答案 0 :(得分:1)
我认为您的错误是由于此行render 'edit'
造成的。您应该在使用 format
时指定 respond_to
。
更新您的 update_avatar
方法,以便
def update_avatar
@user = current_user
if @user.update(user_params)
respond_to do |format|
format.js { render 'update_avatar'}
flash[:notice] = "Updated user"
end
else
format.html { render 'edit' } # here
end
end
答案 1 :(得分:0)
{ render 'update_avatar'}
中的format.js { render 'update_avatar'}
部分不需要,因为它会尝试默认加载名为update_avatar.js
的文件。
你真的有这样的js文件吗?
您还可以使用format.js {render "alert('Hello World');"
}进行测试,看看它是否正常工作。
答案 2 :(得分:0)
我认为你应该尝试:
format.js { render 'update_avatar',
flash[:notice] = "Updated user"}
和btw deyan是对的! format.js渲染默认情况下渲染update_avatar.js你不需要指定它。
答案 3 :(得分:0)
对我来说,答案是完全重写自定义控制器。我遵循了本指南:http://natashatherobot.com/devise-rails-sign-in/并相应地重新考虑了我的代码。在处理这样的事情之前,它还有助于更多地了解Devise!
感谢所有的贡献。在网上寻求帮助的最佳地点,请放下!