2012-05-13 57 views
1

由jQuery的產生在DOM下面一行,當用戶點擊做出5星評級:jQuery的RATY星級評定on Rails的形式

<input type="hidden" name="review[answer01]" id="review_answer01" value="5"> 

不知怎的,我的控制器不撿的PARAMS該值[:評論] [:answer01]

在我看來,當我點擊提交按鈕沒有被髮送的隱蔽價值可言。表單沒有意識到隱藏字段,因爲它在開始時不存在?我該如何解決。

一切正常用一個簡單的單選按鈕選擇。

BTW我手動添加相同的代碼行到我的形式和它的工作。我把

<%= f.hidden_field :answer01, :value => 5 %> 

它生產的html:

<input id="review_answer01" name="review[answer01]" type="hidden" value="5"> 

我只是不明白這一點...

編輯:

這裏是JS源這裏是JS: https://github.com/wbotelhos/raty/blob/master/js/jquery.raty.js

輸入標籤由線62,其餘略微改裝成,得到ID(生成我不確定這是否是問題)。

我的線62:self.score = $('<input />', { type: 'hidden', name: self.opt.scoreName, id: self.opt.scoreId}).appendTo(self);

我還添加scoreID : 'blank'$.fn.raty.defaults {}提供一個選項來設置ID。現在

,我的觀點裏,我有:

<table class='table'> 
    <tbody> 

    <%= simple_form_for @review, :html => { :multipart => true } do |f| %> 

    <td style='width:115px; padding-top:10px;'><div id="s1"></td> 
    <td><h3 style = 'padding-bottom:3px;'><%= @questions[0] %></h3></td> 

    [...] (repeated for other questions) 

    </tbody> 
</table> 

    <div style='margin-left:80px; margin-top:20px; margin-bottom:200px;' id='subbut'> 
    <%= f.button :submit, "Submit Review", :class=>'btn btn-large' %> 
    </div> 
    <% end %> 

<script> 
$('#s1').raty({ 
    scoreName : 'review[answer01]', 
    scoreId : 'review_answer01' 
}); 
</script> 

我的螢火DOM分析看到所選的5/5星級什麼:

<td style="width:115px; padding-top:10px;"> 
<div id="s1" style="cursor: pointer; width: 100px; "> 
    <img src="/assets/star-on.png" alt="1" title="bad">&nbsp; 
    <img src="/assets/star-on.png" alt="2" title="poor">&nbsp; 
    <img src="/assets/star-on.png" alt="3" title="regular">&nbsp; 
    <img src="/assets/star-on.png" alt="4" title="good">&nbsp; 
    <img src="/assets/star-on.png" alt="5" title="gorgeous"> 
    <input type="hidden" name="review[answer01]" id="review_answer01" value="5"> 
</div> 
</td> 

表單標籤:

<form accept-charset="UTF-8" action="/reviews" class="simple_form new_review" enctype="multipart/form-data" id="new_review" method="post" novalidate="novalidate"></form> 
+0

這似乎很好,我們可以有這使得它和/或周圍的HTML表單的JS? –

回答

1

你的HTML結構不對...看:

<table class='table'> 
    <tbody> 

    <%= simple_form_for @review, :html => { :multipart => true } do |f| %> 

    <td style='width:115px; padding-top:10px;'><div id="s1"></td> 
    <td><h3 style = 'padding-bottom:3px;'><%= @questions[0] %></h3></td> 

    [...] (repeated for other questions) 

    </tbody> 
</table> 

    <div style='margin-left:80px; margin-top:20px; margin-bottom:200px;' id='subbut'> 
    <%= f.button :submit, "Submit Review", :class=>'btn btn-large' %> 
    </div> 
    <% end %> 

表內的form開始,但最終外面。這將導致HTML被解析爲不包括所有的input和一些一般的怪異,因爲瀏覽器無法弄清楚你的意思。

順便說一句,使用HAML會規避那樣的問題,但每一個他自己:)

+0

不錯,我在語義上不屬於那裏的表格之外有另一行。這就是爲什麼表開始更早。但是,我現在已經在表格中使用它,並且一切正常。謝謝Felix! – Abram

+0

嗯,一個學究,表不屬於語義附近的任何地方在這裏:) –

+1

噢,但Twitter的引導表讓形式看起來那麼好! – Abram