我在里面有项目和待办事项,todos有复选框和&文本,所以当我更改复选框时,必须在没有任何按钮的情况下更新整个模型。
这是关于heroku的项目:https://polar-scrubland-30279.herokuapp.com/
index.html.erb(我知道我不是最好的代码拼写器)
<% @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 %>
这是我的ProjectsController:
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
问题是:如何将我的表单与我的控制器连接,并在选中/取消选中复选框时更改待办事项的布尔变量。我尝试了一些变体,但需要一个刷新按钮,我不想拥有它。
答案 0 :(得分:0)
你必须使用 jQuery checkbox change and click event 抓住复选框更改事件,
您还可以使用ajax请求 关于变更事件的http://api.jquery.com/jquery.ajax/,
在ajax请求中使用path来更新Projects控制器中的方法。
请注意,您必须将路径放在文件config / routes.rb中, 像这样的东西:
发布'url'=&gt; '项目#更新'