2017-09-22 15 views
0

以下のフォームタグが機能します。しかし、私はスタイリングを追加し、text_field_tagをドロップダウン選択に置き換えて、ユーザーが時間を選択できるようにしたいと考えました。ブートストラップを使ってレールフォームでドロップダウンを作成するには?

<%= form_tag("/availability", method: "post") do %> 
    <%= label_tag(:available_hour, "Add Availability:") %> 
    <%= text_field_tag(:available_hour) %> 
    <%= submit_tag("Add") %> 
<% end %> 

ブートストラップフォームを使用してドロップダウン選択でフォームを作成する際に問題があります。私は試しました:

<form method="post" action="/availability"> 
    <select class="custom-select"> 
    <% (1..24).to_a.each do |el| %> 
     <option value=el><%= el%></option> 
    <% end %> 
    </select> 
    <button type="submit" class="btn btn-primary">Submit</button> 
</form> 

しかし、それは私にActionController::InvalidAuthenticityTokenエラーを与えました。

これはユーザーの表示ビュー内で実行され、実行中のアクションは可用性モデルの作成アクションからのものです。

関連するSO post on bootstrap formが見つかりましたが、答えにはPHPが使用されています。これは彼が使ったものです:<form action="results.php" method="POST" role="form" class="form-horizontal">

どういうわけかブートストラップを指してAvailabilityを探すといいと思います。

コントローラー(とメソッド)を使用するブートストラップ形式をどのように指摘できますか?

+0

を試すことができますか?コード全体は '' –

答えて

1

おそらくform_tagによって自動的に含まれるCSRF値は省略されています。

#app/views/layouts/application.html.erb 
<%= csrf_meta_tags %> 

を追加

試すか、あなたは直接フォームブロックに追加することができます

<%= hidden_field_tag :authenticity_token, form_authenticity_token %> 
+0

のようになります。私の古いコメントは削除されました。私は訂正し、 'hidden_​​field_tag'を試して修正しました。私はコードに他の変更を加え、それがうまくいった。ありがとう! – Iggy

1

form_tagヘルパーlinkを、あなたはオプションを追加することができ、authenticity_token:偽

は、実際にすでにレールここの時間とドロップダウンを作成するためのアクションビューヘルパーがありますlink

あなたの問題のために

あなたはオプションタグの値は `` <%= el %>すべきではない

<%= form_tag("/availability", method: "post", authenticity_token: false) do %> 
    <div class="row form-group"> 
    <%= f.label "Add Availability:", :class => 'control-label col-sm-3' %> 
    <div class="col-sm-5"> 
     <%= select_hour :available_hour, :class => 'form-control') %> 
    </div> 
    </div> 
    <button type="submit" class="btn btn-primary">Submit</button> 
<% end %> 
関連する問題