我正在尝试在我的应用程序中实施评级系统,我尝试了Rateit但是无法让它工作,所以我想尝试构建我自己的,加上这种方式我希望通过了解过程来学习更多< / p>
目前我正在尝试传递所点击的星星的价值
<%= form_for @rating do |f| %>
<%= f.hidden_field :ratings, :id => "hiddenRating", :value => '' %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= f.hidden_field :recipe_id, :value => @recipe.id %>
<div class="ratings">
<ul>
<li id="firstStar"></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<%= f.submit "Submit" %>
<% end %>
$(document).ready(function(){
$('#firstStar').click(function(){
$('#hiddenRating').value = 1;
});
});
所以我的想法是,如果用户点击第一个星号,那么值1应该作为表单中的评级值传递,这不会发生,因为我不知道要传递什么
:value => ''
我确定有更好的方法可以做到这一点,但正如我所说,我想逐个学习,以便最后我可以把它们放在一起,当然如果有人有更好的建议那么请告诉我。
def new
@rating = Rating.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @rating }
end
end
def create
@rating = Rating.new(params[:rating])
respond_to do |format|
if @rating.save
format.html { redirect_to @rating, notice: 'Rating was successfully created.' }
format.json { render json: @rating, status: :created, location: @rating }
else
format.html { render action: "new" }
format.json { render json: @rating.errors, status: :unprocessable_entity }
end
end
end
答案 0 :(得分:2)
好的,所以希望这可以帮助其他类似情况的人,我的表格现在看起来像这样
<%= f.hidden_field :ratings, :id => "hiddenRating"%>#Value has been removed
我的Jquery看起来像是
$(document).ready(function(){
$('#firstStar').click(function(){
$('#hiddenRating').val(1);
});
});
无需在表单中传递值,因为.val()会将其分配给id
无论如何,这是我的理解