2016-10-11 9 views
0

私route.rbActionController ::アクションでrespond_toのJSとUnknownFormat:私のcreate.js.erb

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  

を作成

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

レールは言います: ActionController :: HomeControllerの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''に変更することはできますか?なぜあなたは 'get/home/create 'を必要としますか? – sahil

+0

私の間違い((私のHomeController:review_n.review_n to review_n.review_name – deni5n

答えて

0

respond_toブロックの外にあるrender 'index'コールを打つあなたのコードですか?それはあなたのロジックのすべてのパスが期待されるすべてのフォーマットに対応できることは明らかですので

通常は、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でアクセス可能にすることは安全ではありません。

関連する問題