Bu yüzden, bir hedef içindeki görevlerin bir listesini oluşturmaya çalışıyorum ve bunları tamamlamak için, güncelleyeceğim gizli bir alana sahip bir form_for oluşturuyorum Gönderme sırasında her bir görev kaydının değeri. Ajax'i forma eklemeye çalışıyorum, böylece bir kullanıcı isabet ettiğinde, görev için rekoru güncelleyecektir ve bu formu “tamamlandı” diyerek bir div ile değiştirecektir. Hedeflerİç içe geçmiş kaynakları ve html sınıfı olan her bir döngü içinde bir formda Raylar Ajax
içingoals_controller.rb
def show
@goal = Goal.where(user_id: current_user, id: params[:id]).first
@goal_tasks = @goal.tasks
# This is where the AJAX request will happen
respond_to do |format|
format.html {}
format.js {}
end
end
show.html.erb
<% @goal_tasks.each do |task| %>
<div class="complete-button">
<% if task.completed == false %>
<%= form_for([@goal,task], remote: true) do |f| %>
<%= f.hidden_field :completed , :value => true %>
<%= f.submit "Complete" , :class => "submit-complete" %>
<% end %>
<% else %>
<%= render partial: "goals/taskcompleted" %>
<% end %>
<div>
<% end %>
show.js.erb
$(".complete-button").html("<%= j(render partial: 'goals/taskcompleted') %>")
Oluşan davranış, birden çok görev varsa, html içinde benzersiz id="edit_task_unique_id"
ile birden çok form vardır, ancak ben show.js.erb içinde .complete-button
sınıfını kapıyorum beri. Bütün formlar, tamamen div ile değiştirilir. Bir şekilde, her bir görevle yaratılan formun eşsiz kimliğini yakalamaya çalıştım ama şans yok. Herhangi bir yardım veya geribildirim takdir edilir!
Yardımlarınız için teşekkür ederiz! Sadece birkaç sorum var ve geri bildiriminizden bir ton öğreniyorum. Bu yüzden bir boolean ve datetime (nil?) Seçeneğini kullanma arasındaki farkın ne olduğunu sormak istedim. –
datetime ile, görevi bitirdiğinde kullanıcıya göstermek için datetime (task.completed_at) öğesini de kullanabilirsiniz. –
Başarılı oldunuz mu? –