2016-11-11 6 views
0

私はこの問題について何も質問をしておらず、解決策を見つけることができません。ActionController :: MeetingsController#UnknownFormat update

私はここで会議を更新ボタンがあります。

<%= form_for(meeting) do |f| %> 
    <%= f.hidden_field :accepted, value: true %> 
    <%= button_tag(type: 'submit', class: "btn_primary") do %> 
     Accept <svg><use xlink:href="#checkmark"/></svg> 
    <% end %> 
<% end %> 

私は未知のフォーマットエラーを取得し、それはまだ更新されます。このエラーの原因は何ですか?

更新方法からrespond_to do |format|を削除しようとしました。この1つのボタンの問題を解決しますが、ミーティング/アップデートを呼び出すプラットフォーム上の他のボタンをすべて破棄します。

class MeetingsController < ApplicationController 

respond_to :json, :html 

    def update 
    respond_to do |format| **error highlights this line** 
     if @meeting.update(meeting_params) 
     format.json { render :show, status: :ok, location: @meeting } 
     else 
     format.html { render :edit } 
     format.json { render json: @meeting.errors, status: :unprocessable_entity } 
     end 
    end 
    end 
end 

コンソール:

Started PATCH "/meetings/224" for 127.0.0.1 at 2016-11-11 16:05:27 -0500 
Processing by MeetingsController#update as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"hK6AoOZuw9DWyKUXw1dXWOSUolooWgBUPnkItUJX5Tm7XvimsHd9518pkqwVvNhUi3L3vlA4OZaJZiAgrbS0Ig==", "meeting"=>{"accepted"=>"true"}, "button"=>"", "id"=>"224"} 
    User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]] 
    Meeting Load (0.2ms) SELECT "meetings".* FROM "meetings" WHERE "meetings"."id" = ? LIMIT 1 [["id", 224]] 
    (0.3ms) begin transaction 
    SQL (0.5ms) UPDATE "meetings" SET "accepted" = ?, "updated_at" = ? WHERE "meetings"."id" = ? [["accepted", "t"], ["updated_at", "2016-11-11 21:05:27.882521"], ["id", 224]] 
    (1.3ms) commit transaction 
Completed 406 Not Acceptable in 24ms (ActiveRecord: 2.7ms) 

ActionController::UnknownFormat (ActionController::UnknownFormat): 
    app/controllers/meetings_controller.rb:65:in `update' 

これは問題はなかった、と一見なしどこから出てきました。このエラーの原因は何ですか?ありがとう!

答えて

1

私は問題が何であるか知っていると思います。私はあなたの方法は、固体のロジックを持っているので、あなたが不明なフォーマットエラーを取得しますが、まだ成功した会議を更新している理由は、それが会議を更新していますあなたのアップデート方法に

class MeetingsController < ApplicationController 

respond_to :json, :html 

def update 
respond_to do |format| **error highlights this line** 
    if @meeting.update(meeting_params) 
    format.html { redirect_to some_rails_path } 
    format.json { render :show, status: :ok, location: @meeting } 
    else 
    format.html { render :edit } 
    format.json { render json: @meeting.errors, status: :unprocessable_entity } 
    end 
    end 
end 
end 

を行を追加しましたが、その後、一度ましたそれはJSONという言葉だけではなく、HTMLの点で何をすべきかだけを伝えているので、あなたはelseステートメントの両方に対処しますが、更新が成功するかどうかは分かりません。

+0

さて、それを得ました。これは修正されましたが、原因を明確にするだけで将来のことを知ることができます。リダイレクトを必ずしも必要としなくても、htmlとjsonの両方の方向を指定する必要があるたびに、ご協力いただきありがとうございます!! – gwalshington

+1

@ gwalshingtonしかし、あなたはリロードのために何をすべきか知っているので、リダイレクトが必要です。たとえそれがちょうどredirect_toであっても:戻る。ページをリロードする必要がない場合は、ajaxで提出する必要があります。 – toddmetheny

+1

更新後にページをレンダリングする場合は、format.html呼び出しが必要です。 – toddmetheny

1

これはajaxリクエストですか?それはそうではないようです。しかし、htmlではなくjsonをレンダリングしています。 format.html { redirect_to @meeting, notice: 'Meeting was successfully updated.' }

あなたは、AJAXリクエストをやっている場合は、これは正しい答えではありませんが、I:あなたはページをリロードできるようにするつもりなら、あなたのようなif @meeting.update(meeting_params)

何かにHTMLオプションを追加する必要がありますあなたの質問に何の兆候も見られない。もっと明確にする必要がある場合は、

関連する問題