0

これをフォームとして持っている場合

<%= form_for @rating, :id =>"ratingForm" do |f| %>
<%= f.hidden_field :ratings, :value => '' %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= f.hidden_field :recipe_id, :value => @recipe.id %>
<div class="rateit" id="rateit10">
</div>
<%= f.submit "Submit" %>
<% end %>

この div 内のコンテンツの値を渡すにはどうすればよいですか

<div class="rateit" id="rateit10">
</div>

このjqueryを使用すると、rateit10の値を取得できます

$("#rateit10").bind('rated', function() { 
 $(this).rateit('value');
  });

値は星のセットをクリックすることで得られます。Rateit プラグインを使用してレールに評価システムを実装しようとしています。

4

3 に答える 3

2

最も簡単な方法は、フォームが送信されたときに星の値を読み取るのではなく、ユーザーが星をクリックしたときに非表示フィールドの更新をトリガーすることです。

非表示フィールドを更新するには、星に onnclick イベントを追加する必要があります。これを行うには、隠しフィールドに :id => "my_hidden_​​field" という名前を付けて ID を追加します。

次に、ユーザーが星をクリックしたときに JavaScript 関数をトリガーします。

$("#second_star").click(function() {
  $("my_hidden_field").value = 2;
});
于 2013-02-19T15:24:51.777 に答える
2

これにより、コントローラ メソッドにハッシュが渡されます。

   function pass_to_controller(){
    var rate_value = $("#ratings").value();
    var user_id = $("#user_id").value();  /*you already have access to this through current_user.id */
    var recipe_id = $("#recipe_id").value();

    $.ajax({
        type: "Get",
        url: "path_to_your_controller_action_here",
        timeout: 5000,
        data: {rating : rate_value, user : user_id, recipe : recipe_id }
    }).done(function(response){//do your response here});
}

モデルに直接渡すことはできません。これは、MVC の背後にある思考プロセス全体を回避します。したがって、これを行う最善の方法は、 を使用ajaxしてコントローラ メソッドに渡し、データベースで何かを行う必要がある場合は、モデル メソッドを呼び出すことです。

このように使用する利点はajax、誰かが何かを評価したときにページをリロードしないことです。

于 2013-02-19T15:22:14.407 に答える
0

JavaScript を使用して div 内のテキストを表示するには:

divObj = document.getElementById("rateit10");
            if ( divObj ){
                if ( divObj.textContent ){ //FF
                    alert ( divObj.textContent );
                }else{  //IE            
                    alert ( divObj.innerText );  //alert ( divObj.innerHTML );
                } 
            }  

javascript を使用して div 内に innerdiv を表示するには:

myDivObj = document.getElementById("rateit10");
if ( myDivObj ) {
   alert ( myDivObj.innerHTML ); 
}else{
   alert ( "Text Found" );
}

jqueryを使用してdiv内のテキストを表示するには

$(function(){
       var txt = $('#rateit10').text();
       alert(txt);
    };
于 2013-02-19T15:29:20.490 に答える