2016-05-23 244 views
1

我想從我的控制器直接運行一些JavaScript。Rails,「respond_to do | format |」返回ActionController :: UnknownFormat

我已經創建了我的JS文件中的意見/用品/ create.js.erb

在我articles_controller

def create 
     @article = Article.new(article_params) 
     if @article.save && manage_strings 
      @status = 'success' 
     else 
      @status = 'error' 
      @errormessages= @article.errors.full_messages 
     end 
     respond_to do |format| 
      format.js 
     end 

end 

當我運行我的應用程序的的respond_to做|格式|給我的ActionController :: UnknownFormat

我試圖更新我的mime_types.rb與以下行並重新啓動我的服務器所建議的其他地方,但沒有結果:

Mime::Type.register "application/javascript", :js 

的奇怪的事情是在我的languages_controller以下作品與我的js文件完美搭配views/languages/list.js.erb

def list 
    respond_to do |format| 
     format.js 
    end 
end 

有關什麼可能是錯在這裏的任何想法或建議?

任何幫助表示讚賞。

+1

控制器代碼似乎行,該問題可能是與該請求。你可以在'log/development.log'中加入'Processing ..'和'Parameters:'行嗎? –

+1

@dyserone你的if-else條件應該在你的respond_to塊中。看到我的答案。讓我知道它是否有效。 – uday

+1

對於那個創建請求必須是ajax(xhr)請求不是html。 – Amit

回答

1

最可能的解釋是請求沒有請求JS。爲了使導軌將請求視爲JS,路徑需要以.js結尾或具有正確的AcceptContent-Type標題。不是說mime類型沒有用rails註冊,因爲它註冊了javascript最常見的mime類型。

  1. 檢查鐵軌登錄確認:tail -f logs/development.log
  2. 檢查錯誤的瀏覽器控制檯。
  3. 檢查具有data-remote="true"屬性的表單。

<%= form_for(@thing, remote: true) %> 
+0

我不能相信我的問題很簡單,謝謝。 –

1

你的創建動作不應該是這樣的嗎?

def create 
    @article = Article.new(article_params) 
    respond_to do |format| 
    if @article.save && manage_strings 
     format.html { redirect_to @article, notice: 'Article was successfully created.' } 
     format.json { render :show, status: :created, location: @article } 
    else 
     format.html { render :new } 
     format.json { render json: @article.errors.full_messages, status: :unprocessable_entity } 
    end 
    end 

end 
+0

您的答案似乎更加完整,並且是遵循的良好做法。對不起,沒有選擇你的,但特定的問題是由馬克斯的答案解決。 另外,我想加載一個js文件,會「format.json」工作嗎? –

相關問題