2011-07-11 20 views
1

私はRails 3とJQuery Star Rateプラグインhttp://orkans-tmp.22web.net/star_rating/index.html#main-menu=1&demo-tabs=1を使用しようとしています。問題は、プラグインによって生成された隠しフィールドは、次にレールフォームRails 3 Jqueryスター評価プラグインの問題投稿

<%= form_for(@wine) do |f| %> 
<h3 class="h3wine"></h3> 
<div class="field"> 
    <%= f.label :name , :class => "left"%> 
    <label class="right"><%= f.text_field :name %> </label><br /> 
</div> 
<div class="note_fields"> 
    <h2 style="margin-left: 20%;">Note</h2> 
    <% f.fields_for :notes do |builder| %> 
    <%= render 'note_fields', :f => builder %> 
<% end %> 
    </div> 

<span> 
    <%= f.submit %> 
</span> 
<% end %> 

に提出されていないことである部分note_fields.html.erbだからすべてがOK、に関連している

<script> 

    $("#stars-wrapper1").stars(); 
</script> 
<p> 
<div class="field"> 
    Rating: <span id="stars-cap"></span> 
     <div id="stars-wrapper1"> 
      <br> 
      <% [ '1', '2', '3', '4', '5' ].each do |rates| %> 
       <%= f.radio_button :rating, rates%> 
      <% end %> 
     </div>     
    </div> 
    <div class="field"> 
    <%= f.label :text, :class => "left" %> 
    <label class="right"><%= f.text_area :text,:size => "60x12" %></label><br /> 
    </div> 
</p> 

のようなものです星を表示し、データベースから「評価」の値を表示します。問題は、ログファイルにフィールド評価が表示されない場合です。星が変更された後も更新されます

<input type="hidden" value="5" name="wine[notes_attributes][0][rating]" disabled=""> 

生成hiidenフィールドは、このようなものです。

Parameters: {"commit"=>"Update Wine", "wine"=>{"name"=>"Borba", "notes_attributes"=>{"0"=>{"text"=>"borbocas", "id"=>"6666"}}}, "authenticity_token"=>"/FsKTnSm2eAvPQiXie 

ああ:ログこの表示するもので

。それが助けになるなら、私はプラグインを使用せず、radio_buttonsを操作してもOKです。ヘルプ:)

更新ため

おかげ - あなたのすべてに感謝 -

まさに@Kris :)私は昨日の夜を実現..しかし、私は答えを投稿するにはあまりにも疲れていました。ありがとうたくさん:)

私は、送信イベントフォームにJavaScript関数をバインドしました。したがって、フォームが送信されると、disabled属性は削除されます。 その属性が掲載取得する必要があるようにあなたが無効フィールドが

<script> 
$("form").submit(function() { 
    $("input[name^=\"wine[notes_attributes][0][rating]\"]").removeAttr("disabled");}‌​); 
$("#stars-wrapper1").stars(); 
</script> 
Thanks guys :) 
+0

は便利かもしれません:http://teachmetocode.com/screencasts/building-a-star-rating-system-in-ruby-on-rails-with-jquery/ – apneadiving

答えて

0

挿入されているように、この隠しフィールドは以下のように更新された星をクリックするたびに見えますので。

あなたのモデルでは、このようなものが必要ですか?

attr_accessible:

を評価やあなたはどのような方法でアクセス可能であるものを制限していますか?

+0

こんにちはRyan、 お返事ありがとうございました。私のワインのモデルで 私は 'クラスのワインを持っている真 にhas_many:ノート、:依存=>:accepts_nested_attributes_forユーザー : belongs_toのを破壊するノート end' ワイン belongs_toの::ユーザー私はattr_accessible入れてみました end' :私のノートモデルが、運に評価を... – diogui

+0

とNote.rbに私は 'クラス注

+0

ありがとうございます。私は、ワイン[ノート_attributes] [0] [評価]は、私がラジオボタンでそれを持っていた前にそれが働くべき方法であることを知っています。しかし、私はあなたが言っていることを試してみます。 Ohとrailsは、オブジェクトのidを使ってネストされたオブジェクト(この場合はメモ)の隠しフィールドを生成し、それが動作します。だから、ネストしたオブジェクトの隠れたフィールドに問題はないようです:) – diogui

1

jqueryのバージョンを確認すると、星評価は1.5.2までのjqueryをサポートします。 新しいjqueryバージョンがこのバグに該当します。

+0

こんにちは、それを知らなかった!ご協力いただきありがとうございます。 – diogui

+0

1.5.2に戻って私のための無効なバグを修正しました(私は何かをハックする必要はありませんでした) – MFB

1

問題は、生成された隠しフィールドに無効な属性があり、無効なフィールドが送信に有効でないことです。

これを読む:私はこれに対する解決策を把握しようと、まだjQueryのUIスターV3.0.1、jQueryの1.6.1を使用して、この問題を自分で抱えている http://www.w3.org/TR/html4/interact/forms.html#h-17.12

UPDATE:

OK、私は解決策を考え出したしました。それはハックですが、問題を修正します。

基本的に私は隠された入力を通過し、disabled属性を削除するにはjQueryを使用しています:

$("input[type=hidden]").removeAttr("disabled"); 
+1

正確に:)私は昨日の夜を実現します..しかし、私は答えを投稿するにはあまりにも疲れていました。ありがとうたくさん:) 私はイベントのフォームを送信するには、javascript関数をバインドしました。したがって、フォームが送信されると、disabled属性は削除されます。あなたが星をクリックするたびに、この隠されたフィールドは更新され、無効なフィールドが挿入されるようになります。 '$(" form ")submit(function(){$(" input [name^= \ "wine [notes_attributes] [0] [rating] \ "]")。removeAttr( "disabled");}); $( "#stars-wrapper1")。stars(); ありがとうございました:) – diogui

+0

@diogui、(私はワイン[ノート]将来的に他の人が恩恵を受けるためには、あなたの質問をあなたの答えで編集するべきでしょう。 – GregL

+0

@ GregL、良いアイデア! done :) – diogui

0

私はjQueryの1.7.2とjQuery UIスター3.0.1を実行していますよ。

それは回帰はjQueryのは今ブールの属性を処理する方法に関連しているようだ...ここ

は私の変更です:

73: o.disabled = o.disabled || (o.isSelect ? $(self.$selec).is(':disabled') : $(this).is(':disabled'));

155: self.$value.attr({disabled: o.disabled, value: o.value});

関連する問題