0

私はブローフォームを選択しています

<%= f.select(:title, options_for_select([['Pick a reason',{:value => 0}],['Title 2', {:value => 1}], ['Title 3', {:value => 3}])) %>

したがって、誰かがドロップダウンから 3 つのオプションのいずれかを選択すると、jquery を使用してテキスト ボックスに 3 つのうちの 1 つをレンダリングします。

<%= f.text_area :text , :rows => 10, :class=>"selectInput", :id=>"0", :style=>"display:none;", :value=>" text for pick reason"%>

<%= f.text_area :text , :rows => 10, :class=>"selectInput", :id=>"1", :style=>"display:none;", :value=>" text for title 1"%>

<%= f.text_area :text , :rows => 10, :class=>"selectInput", :id=>"2", :style=>"display:none;", :value=>" text for title 2"%>

しかし、どのオプションが選択されていても、最後の text_area エントリがデータベースに保存されます。この場合、その

<%= f.text_area :text , :rows => 10, :class=>"selectInput", :id=>"2", :style=>"display:none;", :value=>" text for title 2"%>

どうすればそれを回避できますか? そして、画面に表示されているものがデータベースに保存されるものであることを確認してください。

また、ここに私のjqueryがあります

<script>
$(document).ready(function(){
    $('#bashing_title').change(function(){
        $(".selectInput").hide();
        $("#"+this.selectedIndex).show();
    });
});

</script>
4

2 に答える 2

1

テキストエリアのいくつかを視覚的に隠していますが、これはそれらすべてが送信されるのを妨げるものではありません - そしてシリアル化される最後の値が Rails によって使用されます。

代わりに、単一のテキスト ボックスを用意し、選択したオプションに応じて内容を変更する必要があります。

<% text_values = {"text0" => "text for pick reason", 
                  "text1" => "text for title1", 
                  "text2" => "text for title2" } %>
<%= f.text_area :text , :rows => 10, :class=>"selectInput", 
                :style=>"display:none;", :value => "", 
                :data => text_values %>

<script>
   $(function(){
     $('#bashing_title').change(function(){
       var textArea = $(".selectInput");
       textArea.show().val(textArea.data('text' + this.selectedIndex));
     });
   });
</script>
于 2013-05-07T18:31:18.453 に答える
0

の代わりにplaceholderinを使用しないのはなぜですか?textareavalue

<%= f.text_area :text , :rows => 10, :class=>"selectInput", :id=>"2", :style=>"display:none;", :placeholder=>" text for title 2"%>

問題が解決しない場合は、それらのフィールドがまだ DOM に存在している可能性があります。remove()代わりに表示されないフィールドにjQueryコードを変更してみてくださいhide()

于 2013-05-07T18:25:09.763 に答える