尝试通过Ruby on Rails使用Ajax呈现待办事项列表。 这是index.html.erb片段:
<div class="row">
<div class="col-md-7 col-md-offset-1" id="tasks"><%= render @tasks %></div>
</div>
渲染@tasks命中时出现错误。 消息指出&#34;缺少部分任务/ _task&#34;
我的控制器声明@tasks = Task.all如下
class TasksController < ApplicationController
before_action :all_tasks, only: [:index, :create]
respond_to :html, :js
def index
@tasks = Task.all
end
def new
@task = Task.new
end
def create
@task = Task.create(task_params)
end
private
def all_tasks
@tasks = Task.all
end
def task_params
params.require(:task).permit(:description, :deadline)
end
end
在这种情况下不确定问题是什么。
任何帮助表示感谢。
答案 0 :(得分:0)
它在app/views/tasks
文件夹中要求部分任务。
要使用或打印@tasks
,您只需在视图中使用Ruby,在<%= ruby_code %>
默认情况下,Rails中的控制器会自动呈现名称与操作对应的视图,这意味着如果您使用<%= render @tasks %>
,Rails将尝试在父文件夹中找到一些名为tasks
的部分&# 39;打印当前视图。
如果您使用@books
index
,我已经看到您在before_action :all_tasks
方法中分配了index
两倍的价值{1}}然后你不需要重新宣布&#34;再一次。
尝试:
# app/views/index.html.erb
<div class="row">
<div class="col-md-7 col-md-offset-1" id="tasks">
<%= @tasks %>
</div>
</div>
# app/controllers/tasks_controller.rb
class TasksController < ApplicationController
before_action :all_tasks, only: [:index, :create]
respond_to :html, :js
def index
end
def new
@task = Task.new
end
def create
@task = Task.create(task_params)
end
private
def all_tasks
@tasks = Task.all
end
def task_params
params.require(:task).permit(:description, :deadline)
end
end