2014-12-23 2 views
0

Я следую этому учебному пособию: http://www.gotealeaf.com/blog/the-detailed-guide-on-how-ajax-works-with-ruby-on-railsКак это работает?

Он частично использует _task, чтобы отобразить все задачи, созданные до сих пор. То, что я не понимаю, почему в парциальное эта линия работает:

<%= task.deadline %> 

Где была задача определена и как она перебрать все задачи?

_task.html.erb

<div class="row"> 
    <div class="col-md-5 col-md-offset-1"> 
    <h2>Tasks</h2> 
    </div> 

    <div class="col-md-2 col-md-offset-4"> 
    <%= link_to new_task_path, remote: true do %> 
     <button class="btn btn-default">New</button> 
    <% end %> 
    </div> 
</div> 

<div class="row"> 
    <div class="col-md-6 col-md-offset-2" id="task-form" style="display:none;"></div> 
</div> 

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

контроллер:

class TasksController < ApplicationController 
    before_action :all_tasks, only: [:index, :create, :update, :destroy] 
    before_action :set_tasks, only: [:edit, :update, :destroy] 
    respond_to :html, :js 

    def new 
    @task = Task.new 
    end 

    def create 
    @task = Task.create(task_params) 
    end 

    def update 
    @task.update_attributes(task_params) 
    end 

    def destroy 
    @task.destroy 
    end 

    private 

    def all_tasks 
     @tasks = Task.all 
    end 

    def set_tasks 
     @task = Task.find(params[:id]) 
    end 

    def task_params 
     params.require(:task).permit(:description, :deadline) 
    end 
end 

вид Индекс:

<div class="row"> 
    <div class="col-md-5 col-md-offset-1"> 
    <h2>Tasks</h2> 
    </div> 

    <div class="col-md-2 col-md-offset-4"> 
    <%= link_to new_task_path, remote: true do %> 
     <button class="btn btn-default">New</button> 
    <% end %> 
    </div> 
</div> 

<div class="row"> 
    <div class="col-md-6 col-md-offset-2" id="task-form" style="display:none;"></div> 
</div> 

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

ответ

2

<%= render @tasks %> является сокращением для:

<% @tasks.each do |task| %> 
    # task object is available here so you can call task.deadline on it 
<% end %> 

http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials искать 3.4.5 рендеринга Коллекции

+0

Ах, милый, это имеет смысл. Благодаря! – user2573222

+0

@ user2573222 прочитал документы в ссылке, которую я добавил в ответ, это объясняет намного лучше. – rmagnum2002