私は simple_form gem を使用しており、次のように remote:true オプションを指定しているフォームを生成しています:
<%= simple_form_for @webinar, validate: true, remote:true do |f| %>
したがって、フォームの出力 html は次のフラグメントになります。
<form accept-charset="UTF-8" action="/webinars" class="simple_form new_webinar" data-remote="true" data-validate="true" enctype="multipart/form-data" id="new_webinar" method="post" novalidate="novalidate"> ... </form>
私が確認したように、標準のform_forヘルパーを使用すると、 remote:trueオプションが使用されているときにdata-remote='true'がフォームに追加されます。生成された html からわかるように、simple_form gem を使用している場合にも、そのような属性があります。
したがって、私のコントローラーには次のものがあります。
def create
@webinar = Webinar.new(params[:webinar])
respond_to do |format|
if @webinar.save
format.html { redirect_to @webinar, notice: 'Webinar was successfully created.' }
format.js
format.json { render json: @webinar, status: :created, location: @webinar }
else
format.html { render action: "new" }
format.json { render json: @webinar.errors, status: :unprocessable_entity }
end
end
end
ただし、常にformat.htmlが使用されます。私は何を間違っていますか?
編集:
私は logger.debug request.format を使用して、実際のフォーマットが何を求めているかを確認し、ログファイルで次のようにしました。
テキスト/html
したがって、問題は simple_form で生成されたフォームにあるに違いありません。