Ich habe Projekte und Todos in ihnen, Todos haben Kontrollkästchen & Text, also wenn ich das Kontrollkästchen ändern, muss das ganze Modell ohne Schaltflächen aktualisiert werden.Ruby on Rails: Aktualisieren des Modells, wenn das Kontrollkästchen geändert wird
Hier ist mein Projekt auf Heroku: https://polar-scrubland-30279.herokuapp.com/
index.html.erb (Ich weiß, dass ich nicht der beste Code speller bin)
<% @projects.each do |project| %>
<div class="col-md-4">
<div class="project">
<%= form_for(local_assigns[:project] || project) do |f| %>
<div class="project-header">
<h2> <%= f.object.title %> </h2>
</div>
<div class="project-todos">
<%= f.fields_for(:todos) do |tf| %>
<div class="todo">
<div class="todo--checkbox">
<%= tf.check_box :isCompleted %>
</div>
<div class="todo--text">
<%= tf.object.text %>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
</div>
<% end %>
Das ist mein ProjectsController ist:
class ProjectsController < ApplicationController
def index
@projects = Project.all
end
def show
@project = Project.find(params[:id])
end
def new
@project = Project.new
end
def create
@project = Project.new(project_params)
if @project.save
# ...
else
# ...
end
end
def update
if @project.update(project_params)
# ...
else
# ...
end
end
private
def set_project
@project = Project.find(params[:id])
end
def project_params
params.require(:project).permit(:foo, :bar, todos_attributes: [:isCompleted, :text])
end
end
project.rb
class Project < ActiveRecord::Base
has_many :todos
accepts_nested_attributes_for :todos
end
todo.rb
class Todo < ActiveRecord::Base
belongs_to :project
end
Die Frage ist: wie kann ich meine Form mit meinem Controller und ändern todo der Booleschen Variable verbinden, wenn Checkbox/uncheked geprüft. Ich habe einige Varianten ausprobiert, aber es gibt einen Refresh-Button, den ich nicht haben möchte.
GitHub - https://github.com/NanoBreaker/taskmanager
Sie http verwenden: // api.jquery.com/jquery.ajax/ –
Hier ist eine High-Level-Idee, haben eine Klasse diese Kontrollkästchen, in der Javascript einen Trigger für dieses Kontrollkästchen haben. Rufen Sie bei diesem Trigger ein API auf, um das Feld im Controller zu aktualisieren. – gates
Sie müssen http://stackoverflow.com/questions/7031226/jquery-checkbox-change-and-click-event verwenden, um Chackbox Änderung Ereignis – andriy