RailsにHTMLフォームがあります:
<form id="my_form" action="submit">
Title: <input type="text" name="title">
</form>
<textarea>
:を使用して新しいフィールドを追加したい
Comment: <textarea rows="4" cols="50"></textarea>
これをフォームに入れても大丈夫ですか?ユーザーが入力した値にアクセスするにはどうすればよいですか?
RailsにHTMLフォームがあります:
<form id="my_form" action="submit">
Title: <input type="text" name="title">
</form>
<textarea>
:を使用して新しいフィールドを追加したい
Comment: <textarea rows="4" cols="50"></textarea>
これをフォームに入れても大丈夫ですか?ユーザーが入力した値にアクセスするにはどうすればよいですか?
正当な理由がない限り、Railsが提供するアクションビューヘルパーを実際に使用する必要があります。
フォームヘルパーは、特定のモデルオブジェクトの周囲にフォームとスコープを作成するリソース指向のメソッドを提供しますが、これはあなたのケースには適していません。
代わりに、一般的なフォームタグヘルパーを使用することをお勧めします。これには、特定のモデルやレコードに関連付けられていないフォームメソッドの一般的なバージョンが含まれます(例:、、form_tag
などtext_field_tag
)text_area_tag
。これらのメソッドでは、レコードをに渡す必要はありません。それらまたは特定のモデルの観点からそれらを定義します。次のように、任意のアクション、IDなどを定義できます。
<%= form_tag "submit", :id => "my_form" do -%>
Title: <%= text_field_tag "title" %>
Comment: <%= text_area_tag "comment", :rows => 4, :cols => 50 %>
<%= submit_tag "Submit" %>
<% end -%>
name
テキストエリアにまたはテキストエリアがないことに注意してください。そのため、この場合に意味のid
ある文字列を任意に割り当てました。"comment"
ユーザーが入力する値にアクセスするという点では、他のフォームと同じようにアクセスします。つまり、コントローラーでアクセスするだけparams[:title]
ですparams[:comment]
。
form_tag ヘルパーを使用すると、次のようにテキストエリアを作成できます。
text_area_tag(:comment, nil, :rows => 5, :cols => 15)
form_tag のコードは次のようになります。
<% form_tag :action => :submit do %>
<%= label_tag "Title" %>
<%= text_field_tag :title %>
<%= text_area_tag :comment, nil, :rows => 5, :cols => 15 %>
<%= submit_tag "submit" %>
<% end %>
コントローラーに submit というメソッドが必要です。そのメソッドでは、params を使用してコメントにアクセスできます。たとえば、コメントは params[:comment] としてアクセスできます。
詳細については、これを参照してください: forms_and_tags
ユーザーがタイトルを押したときにこの方法を使用するのはどうでしょうか。ボックスが強調表示され、ユーザーにもう少し柔軟性が与えられます。
<form id="my_form" action="submit">
<label for="title">Title: </label>
<input type="text" name="title" id="title">
</form>