rails f.select について
<%= form_for(cat) do |f| %> <%= f.label :feed_id %> <%= f.select :feed_id, Feed.all.map{|i| [i.name, i.id] } %>
Paizaの動画教材の中
このように記載すると、なぜ下記のように表示されるのか?
mapで要素を2つ渡しているだけに見える。
まず前提知識としてHTMLのselect
<form action="cgi-bin/formmail.cgi" method="post"> <p>血液型:<br> <select name="blood"> <option value="A">A型</option> <option value="B">B型</option> <option value="O">O型</option> <option value="AB">AB型</option>
参照サイト
HTMLでは、selectの中身がoptionで表示される。
このように記載すると
<%= f.select :name, [["Railsの基礎", "rails_base"], ["Rubyの基礎", "ruby_base"]] %>
このようなHTMLが出力される
表示されるものと,valueのセットで渡すようだ
<select id="page_name" name="page[name]"> <option value="rails_base">Railsの基礎</option> <option value="ruby_base">Rubyの基礎</option> </select>
railsのルール
name属性はそのままparamsのキー(シンボル)になる。
<form ...> <input type="text" name="text1" /> <input type="submit" name="btnPost" value="投稿する"> </form>
これをViewからPostすると,paramsの中身はこうなります。
{ :text1 => "入力された内容", :btnPost => "投稿する" }