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 插件在 Rails 中实现评级系统

4

3 回答 3

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 回答
2

最简单的方法是在用户单击星标时触发隐藏字段的更新,而不是在提交表单时读取星标的值。

我应该在星星上添加一个 onnclick 事件来更新隐藏字段。为此,请使用 :id => "my_hidden_​​field" 向隐藏字段添加一个 ID 来命名它。

然后,当用户点击星号时触发 javascript 函数:

$("#second_star").click(function() {
  $("my_hidden_field").value = 2;
});
于 2013-02-19T15:24:51.777 回答
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 回答