2017-04-05 4 views
1

Ruby on Railsを使用してAjaxでToDoリストをレンダリングしようとしています。ここで がindex.html.erb抜粋です:@tasksヒットをレンダリングする際にアクションコントローラからインスタンス変数を呼び出すときにRoR 5のテンプレートが表示されない

<div class="row"> 
    <div class="col-md-7 col-md-offset-1" id="tasks"><%= render @tasks %></div> 
</div> 

エラーが発生します。 メッセージは私のコントローラは@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 

ない問題は、このような状況にあるのかわからを次のようにことを宣言し、「部分的なタスク/ _Taskがありません」

を述べています。

助けてください。

答えて

0

あなたのapp/views/tasksフォルダ内のタスクの一部を要求しています。あなただけのデフォルトでは<%= ruby_code %>

のようなあなたのビュー内のルビーを使用して、ビューでそれを使用呼ん@tasks、Railsの中にコントローラが自動的にアクションに対応して名前のビューをレンダリングあなたが<%= render @tasks %>を使用している場合、それは意味使用したり、印刷すること

Railsは現在のビューを印刷している親フォルダ内にあるという名前の部分ファイルを検索しようとします。

はまた、私はあなたがあなたのindexbefore_action :all_tasksを使用している場合、あなたは再びそれを「再宣言」する必要はありません、あなたが二回あなたのindex方法で@booksの値を代入している見てきました。

# 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 
+0

おかげセバスチャン:

はして試してみてください!それはすべての問題を解決しました。 – Cblair32

関連する問題