Rails 5 星评级 jQuery 插件评级未超过评级值
Rails 5 Star Rating jQuery Plugin Raty doesn't passing rating value
我是 rails 的新手,我正在使用 Star Rating jQuery Plugin Raty 进行一些评论/评级。现在我有一个需要审查的数据列表,然后审查的方式将在一个 boostrap 模式框中,如下图所示。
一切正常,但是当我点击图片中的提交按钮(显示保存更改)时,我没有收到评级参数,我收到的参数如下图所示。
预期结果也将包括评级值。我已按照步骤在 application.js 中添加 jquery.raty,并在 vendor/assets/javascripts 中分配文件。我还在我的文件中添加了这个 javascript 代码。
<script>
$('#star-rating').raty({
path: '/assets',
scoreName: 'review[rating]'
});
</script>
一切正常,只是没有超过评级值。我检查了结果,发现该值实际上保存在 hidden_tag 中,它包含在 jQuery 插件中,但是当我提交表单时它没有通过。
这是我的 table 和模态框
代码
<% @appointment.approve_applicants.each_with_index do |applicant, index| %>
<tr>
<td><%= index + 1 %></td>
<td><%= link_to applicant.user.fullname, applicant.user %></td>
<td><%= link_to "Reviews", applicant.build_review, "data-toggle" => "modal", "data-target" => "#detail#{applicant.id}" %></td>
<td></td>
<!--Modal-->
<div class="modal fade" id="detail<%= applicant.id %>" role="dialog">
<div class="modal-dialog">
<!--Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close close_book_detail" data-dismiss="modal">×</button>
<%= form_for(Review.new) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="form-group row">
<%= f.label :rating, class: 'col-sm-2 form-control-label' %>
<div class="col-sm-6" id='star-rating'>
</div>
</div>
<%= f.label :comment %>
<%= f.text_area :comment, placeholder: "Please enter comment here." %>
<%= f.submit "Save changes", class: "btn btn-primary" %>
<% end %>
</div>
</div>
</div>
</div>
</tr>
<% end %>
下面是模态框的HTML。
<div class="modal fade" id="detail4" role="dialog">
<div class="modal-dialog">
<!--Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close close_book_detail" data-dismiss="modal">×</button>
<form class="new_review" id="new_review" action="/reviews" accept-charset="UTF-8" method=post></form>
<div class="form-group row">
<label class="col-sm-2 form-control-label" for="review_rating">Rating</label>
<div class="col-sm-6" id="star-rating" style="cursor: pointer;">
<img alt="1" src="/assets/star-on.png" title="bad">
<img alt="2" src="/assets/star-on.png" title="poor">
<img alt="3" src="/assets/star-on.png" title="regular">
<img alt="4" src="/assets/star-off.png" title="good">
<img alt="5" src="/assets/star-off.png" title="gorgeous">
<input name="review[rating]" type="hidden" value="3">
</div>
<label for="review_comment">Comment</label>
<textarea placeholder="Please enter comment here." name="review[comment" id="review_comment></textarea>
<input type="submit" name=commit" value="Save changs" class="tbn btn-primary" data-disable-with="Save changes">
</div>
</div>
</div>
</div>
请问有解决办法吗?提前谢谢你。
在 raty()
中传递 target
选项以获得星级评分值:-
<script>
$('#star-rating').raty({
path: '/assets',
target : '#id_of_field_to_pass_star_rating',
targetType : 'score',
targetKeep : true
});
</script>
在模态中创建一个隐藏字段为:-
<div class="col-sm-6" id='star-rating'>
<%=hidden_field_tag "review[rating]", '', id: "id_of_field_to_pass_star_rating" %>
您可以获得 jquery-raty also ruby gem jquery-raty-rails
的各种选项
此解决方案在单击星标时将评分值传递到隐藏表单字段。
<div id="star-rating"></div>
<%=hidden_field_tag "review[rating]", id: "review_rating" %>
<script>
$('#star-rating').raty({
click: function(score) {
$('#review_rating').val(score);
}
});
</script>
我是 rails 的新手,我正在使用 Star Rating jQuery Plugin Raty 进行一些评论/评级。现在我有一个需要审查的数据列表,然后审查的方式将在一个 boostrap 模式框中,如下图所示。
一切正常,但是当我点击图片中的提交按钮(显示保存更改)时,我没有收到评级参数,我收到的参数如下图所示。
预期结果也将包括评级值。我已按照步骤在 application.js 中添加 jquery.raty,并在 vendor/assets/javascripts 中分配文件。我还在我的文件中添加了这个 javascript 代码。
<script>
$('#star-rating').raty({
path: '/assets',
scoreName: 'review[rating]'
});
</script>
一切正常,只是没有超过评级值。我检查了结果,发现该值实际上保存在 hidden_tag 中,它包含在 jQuery 插件中,但是当我提交表单时它没有通过。
这是我的 table 和模态框
代码<% @appointment.approve_applicants.each_with_index do |applicant, index| %>
<tr>
<td><%= index + 1 %></td>
<td><%= link_to applicant.user.fullname, applicant.user %></td>
<td><%= link_to "Reviews", applicant.build_review, "data-toggle" => "modal", "data-target" => "#detail#{applicant.id}" %></td>
<td></td>
<!--Modal-->
<div class="modal fade" id="detail<%= applicant.id %>" role="dialog">
<div class="modal-dialog">
<!--Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close close_book_detail" data-dismiss="modal">×</button>
<%= form_for(Review.new) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="form-group row">
<%= f.label :rating, class: 'col-sm-2 form-control-label' %>
<div class="col-sm-6" id='star-rating'>
</div>
</div>
<%= f.label :comment %>
<%= f.text_area :comment, placeholder: "Please enter comment here." %>
<%= f.submit "Save changes", class: "btn btn-primary" %>
<% end %>
</div>
</div>
</div>
</div>
</tr>
<% end %>
下面是模态框的HTML。
<div class="modal fade" id="detail4" role="dialog">
<div class="modal-dialog">
<!--Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close close_book_detail" data-dismiss="modal">×</button>
<form class="new_review" id="new_review" action="/reviews" accept-charset="UTF-8" method=post></form>
<div class="form-group row">
<label class="col-sm-2 form-control-label" for="review_rating">Rating</label>
<div class="col-sm-6" id="star-rating" style="cursor: pointer;">
<img alt="1" src="/assets/star-on.png" title="bad">
<img alt="2" src="/assets/star-on.png" title="poor">
<img alt="3" src="/assets/star-on.png" title="regular">
<img alt="4" src="/assets/star-off.png" title="good">
<img alt="5" src="/assets/star-off.png" title="gorgeous">
<input name="review[rating]" type="hidden" value="3">
</div>
<label for="review_comment">Comment</label>
<textarea placeholder="Please enter comment here." name="review[comment" id="review_comment></textarea>
<input type="submit" name=commit" value="Save changs" class="tbn btn-primary" data-disable-with="Save changes">
</div>
</div>
</div>
</div>
请问有解决办法吗?提前谢谢你。
在 raty()
中传递 target
选项以获得星级评分值:-
<script>
$('#star-rating').raty({
path: '/assets',
target : '#id_of_field_to_pass_star_rating',
targetType : 'score',
targetKeep : true
});
</script>
在模态中创建一个隐藏字段为:-
<div class="col-sm-6" id='star-rating'>
<%=hidden_field_tag "review[rating]", '', id: "id_of_field_to_pass_star_rating" %>
您可以获得 jquery-raty also ruby gem jquery-raty-rails
的各种选项此解决方案在单击星标时将评分值传递到隐藏表单字段。
<div id="star-rating"></div>
<%=hidden_field_tag "review[rating]", id: "review_rating" %>
<script>
$('#star-rating').raty({
click: function(score) {
$('#review_rating').val(score);
}
});
</script>