我正在尝试使用Rails 3和JQuery Star Rate插件http://orkans-tmp.22web.net/star_rating/index.html#main-menu=1&demo-tabs=1。问题是插件生成的隐藏字段没有以rails形式提交
<%= 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就像
<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>
所以一切都很好,与显示星星有关,并显示数据库中“评级”的值。问题是在日志文件中提交字段评级时没有。
生成的hiiden字段是这样的:
<input type="hidden" value="5" name="wine[notes_attributes][0][rating]" disabled="">
一旦星星变化,它会得到很好的更新。
在日志中显示:
Parameters: {"commit"=>"Update Wine", "wine"=>{"name"=>"Borba", "notes_attributes"=>{"0"=>{"text"=>"borbocas", "id"=>"6666"}}}, "authenticity_token"=>"/FsKTnSm2eAvPQiXie
喔。如果它有帮助,如果我不使用插件并保留radio_buttons它可以正常工作。
感谢您的帮助:)
更新 - 感谢大家 -
完全是@Kris :)我意识到昨天晚上..但我太累了,无法发布答案。非常感谢:)
所以我将javascript函数绑定到提交事件表单。因此,在提交表单时,将删除属性disabled。 因为每次单击星标时,此隐藏字段都会更新,因此插入了禁用字段
<script>
$("form").submit(function () {
$("input[name^=\"wine[notes_attributes][0][rating]\"]").removeAttr("disabled");});
$("#stars-wrapper1").stars();
</script>
Thanks guys :)
答案 0 :(得分:1)
检查你的jquery版本,星级评级支持jquery高达1.5.2。 较新的jquery版本确实属于这个错误。
答案 1 :(得分:1)
问题是生成的隐藏字段具有禁用属性,禁用字段对提交无效。
阅读本文: http://www.w3.org/TR/html4/interact/forms.html#h-17.12
我自己使用jQuery UI Stars v3.0.1,jQuery 1.6.1并且仍然试图找到解决方案。
<强>更新强>
好的,我想出了一个解决方案。这是一个黑客,但它解决了这个问题。
基本上我使用jQuery来浏览隐藏的输入并删除已禁用的属性:
$("input[type=hidden]").removeAttr("disabled");
答案 2 :(得分:0)
看起来应该发布该属性。
在你的模特上你需要这样的东西吗?
attr_accessible:rating
或者您是否以任何方式限制可访问的内容?
答案 3 :(得分:0)
我正在运行JQuery 1.7.2和JQuery UI Stars 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});