从控制器

时间:2017-04-05 19:32:19

标签: ruby-on-rails ajax

尝试通过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

在这种情况下不确定问题是什么。

任何帮助表示感谢。

1 个答案:

答案 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