2011-02-26 4 views
0

아래 해결 방법을 직접 확인해보십시오.레일에 Scriptaculous 슬라이더 값 저장

한 번에 하나씩 동적 값을 저장하려고합니다. 제목 has_many 특성 has_many 등급. 슬라이더 값은 등급으로 저장해야합니다. 과목에는 역동적 인 특성이 있습니다.

지금은 슬라이더가 동적 ID가있는 숨겨진 필드의 값을 업데이트합니다. 숨겨진 필드 값을 평가/생성에 전달하는 데 문제가 있습니다.

내가 달성하고자하는 것은 동적 인 수의 특성을 나열하는 제목 표시보기이며 각 특성에는 슬라이더가 있습니다. 슬라이더의 값을 저장 단추 또는 링크로 하나씩 등급으로 저장하려고합니다.

도움을 주시면 감사하겠습니다.

주제 - show.html.erb :

<style type="text/css"> 
    div.slider { width:256px; margin:10px 0; background-color:#b3b3b3; height:10px; position: relative; } 
    div.slider div.handle { width:10px; height:15px; background-color:#474747; cursor:move; position: absolute; } 
</style> 

<p id="notice"><%= notice %></p> 

<h1> 
    <%= @subject.name %> 
</h1> 

<p> 
    <%= @subject.description %> 
</p> 

<table> 
    <tr> 
    <th>Traits</th> 
    </tr> 

    <% @subject.traits.each do |trait| %> 
    <tr> 
     <td><%= link_to trait.name, trait %></td>&nbsp; &nbsp; &nbsp; 
     <td><%= link_to 'Edit', edit_trait_path(trait) %></td>&nbsp; 
     <td><%= link_to 'Destroy', trait, :confirm => 'Are you sure?', :method => :delete %></td> 
    </tr> 
    <tr> 
     <td> 
      #Slider value is sent here onChange. This value needs to be passed to rating#create 
      <input id="trait.id", name="rating[value]", value="50" /> 

      <div id="s<%= trait.id %>" class="slider"> 
      <div class="handle"></div> 
      </div> 

      <script type="text/javascript"> 
      (function() { 
       var trait_slider = $('s<%= h trait.id %>') 

       new Control.Slider(trait_slider.down('.handle'), trait_slider, { 
       range: $R(0, 100), 
       sliderValue: 50, 
       onChange: function(v) { $('<%= h trait.id %>').value = v } 
       }); 
      })(); 
      </script> 
     </td> 
     <td> 
      #How the hell do I save each slider value??? is this the best way of doing it? 
      <%= link_to "save", :controller => "ratings", :action => "create" %> 
     </td> 
    </tr> 
<% end %> 
</table> 

<br /><br /><%= render 'traits/form' %> 

<%= link_to 'Edit', edit_subject_path(@subject) %> | 
<%= link_to 'Back', subjects_path %> 
+0

당신이 해결책을 발견 다행! 이 질문을 나중에 찾는 사람들이 쉽게 식별 할 수 있도록 대답으로 게시해야합니다. 당신이 당신의 자신의 대답을 받아들이면, 나는 심지어 당신이 배지를 얻는다고 생각합니다. :) –

답변

1

해결책 : 다중 양식 및 동적 숨겨진 DIV ID를

<% @subject.traits.each do |trait| %> 
    <%= form_for @rating do |rf| %> 
     <tr> 
     <td><%= link_to trait.name, trait %></td>&nbsp; &nbsp; &nbsp; 
     <td><%= link_to 'Edit', edit_trait_path(trait) %></td>&nbsp; 
     <td><%= link_to 'Destroy', trait, :confirm => 'Are you sure?', :method => :delete %></td> 
     </tr> 
     <tr> 
      <td> 
      <input id="<%= trait.id %>", name="rating[value]", type="hidden", value="50" /> 
      <%= rf.hidden_field :trait_id, :value => trait.id %> 
      <%= rf.hidden_field :subject_id, :value => @subject.id %> 

      <div id="s<%= trait.id %>" class="slider"> 
       <div class="handle"></div> 
      </div> 

      <script type="text/javascript"> 
       (function() { 
       var trait_slider = $('s<%= h trait.id %>') 

       new Control.Slider(trait_slider.down('.handle'), trait_slider, { 
        range: $R(0, 100), 
        sliderValue: 50, 
        onChange: function(v) { $('<%= trait.id %>').value = v } 
       }); 
       })(); 
      </script> 
      </td> 
      <td> 
      <div class="actions"> 
       <%= rf.submit "Save Rating" %> 
      </div> 
      </td> 
     </tr> 
    <% end %> 
    <% end %>