フィールド「department」を既存のdeviseサインアップテンプレートに追加しようとしています。私は、dept1、dept2 ....、not_listedのような部門のリストからなるドロップダウンを実装しようとしています。 not_listedを選択すると、ユーザーがカスタム部門を入力し、部門の値をNot Listedではなくデータベースに格納できるテキストボックスを表示したいとします。空のテキストボックスをform_for selectから選択した値に基づいて表示します。
ここにコードがあります。
<div class="border-form-div">
<h3 class="text-center">Create a new account</h3>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div class="form-group">
<%= f.email_field :email, :autofocus => true, :placeholder => "Email address", class: "form-control", required: false %>
</div>
<div class="form-group">
<%= f.password_field :password, :placeholder => "Password", class: "form-control", required: false %>
</div>
<div class="form-group">
<%= f.password_field :password_confirmation, :placeholder => "Confirm password", class: "form-control", required: false %>
</div>
<div class="form-group">
<%= f.select :department, options_for_select(["dept1", "dept2", "dept3", "dept4", "Not Listed"]), class: "form-control", html: { id: "dept-id"} %>
</div>
<div>
<ul><%= f.text_field :department, :placeholder => "enter your department", html: {id: "not_listed_1"} %></ul>
</div>
<script>
$(document).ready(function(){
$('#dept-id').change(function() {
var selected = $(this).val();
if(selected == 'Not Listed'){
$('#not_listed_1').show();
}
else{
$('#not_listed_1').hide();
}
});
});
</script>
<br>
<div class="text-center">
<div class="form-group">
<%= f.submit "Sign up", :class => "btn btn-primary", :id => "page[sign_up]" %>
<%= link_to "Cancel", new_user_session_path, class: "btn btn-default", :id => "page[cancel]" %>
</div>
</div>
私はjQueryを使って良くないです。私が間違っているところを指摘できる人がいますか?
上記のコードにはどのような問題がありますか? – tpdietz
テキストボックスは、ページが読み込まれたときに表示されます。ドロップダウンリストで選択されていない場合にのみテキストボックスが表示されるようにしたい – draghori
デフォルトで 'html:{id:" not_listed_1 "、style:" display:none "}を使ってテキストボックスを隠す'または 'class:テキストボックスのための「隠された」 – Vijai