2016-10-11 69 views
0

我route.rb的ActionController :: UnknownFormat與行動的respond_to JS:創建

post 'home/create' 
    get 'home/create' 

我的HomeController

def create 
     @review_n = Review.create(review_params) 
     if @review_n.errors.empty? 
     respond_to do |format| 
      format.js { render 'create', locals: {review_name: @review_n.review_n, review_body: @review_n.review_body} } 
     end 
     else 
     render 'index' 
     end 
    end  

我create.js.erb

$(function() { 
     $(".wrap-body").append("<div> tmp </div>"); 
    }); 

導軌說: HomeController中的ActionController :: UnknownFormat#create

我想在我的html.erb發送數據沒有重新加載頁面。請幫幫我!

UPD:

我html.rb

 <%= form_tag home_create_path, :method => 'post', :remote => true do %> 
      <%= text_area_tag 'review[review_body]', nil %> 
      <%= text_field_tag 'review[review_name]', nil %> 
      <%= submit_tag 'send' %> 
     <% end %> 
+0

你還可以添加日誌嗎? – sahil

+1

你也可以改變你的路線到'post'home/create'=>'home#create''嗎?爲什麼你需要'獲得'home/create''。 – sahil

+0

我的錯誤((在我的HomeController:review_n.review_n review_n.review_name – deni5n

回答

0

是您的代碼擊中render 'index'呼叫是respond_to塊外?

通常你會放在respond_to塊內的所有render調用,因此很明顯,你的邏輯的所有路徑可以給所有預期格式進行迴應:

def create 
    @review_n = Review.create(review_params) 

    respond_to do |format| 
    if @review_n.errors.empty? 
     format.js { render 'create', locals: {review_name: @review_n.review_n, review_body: @review_n.review_body} } 
    else 
     format.js { render 'index' } 
    end 
    end 
end 

這就需要既具有create.js.erbindex.js.erb(用於錯誤情況)。

而且,@sahil建議,您的routes.rb不應申報get 'home/create' - 這個動作修改數據,所以它是不是安全,使其通過GET訪問。

相關問題