0
私は単純なレール3 todoアプリケーションに取り組んでいます。私は完了したタスクと完了したタスクでアプリケーションをフィルタリングしようとしていますが、スコープを呼び出すときはいつでもエラーメッセージが表示されます。Rails 3タスクスコープ?
undefined method `completed' for #<Array:0x007fe8420d0e58>
task.rb
scope :completed , where(:completed => true)
scope :incomplete , where(:finished => false)
<table>
<tr>
<th>Name</th>
<th>Description</th>
<th>Finished</th>
<th>User</th>
</tr>
<% @tasks.each do |task| %>
<tr>
<td><%= task.name %><%= button_to "complete", complete_task_path(task.id)%></td>
<td><%= task.description %></td>
<td><%= task.finished %></td>
<td><%= task.user_id %></td>
<td><%= link_to 'Show', task %></td>
<td><%= link_to 'Edit', edit_task_path(task) %></td>
<td><%= link_to 'Destroy', task, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>
</table>
<%= content_tag :h2, "Stuff Ive done" %>
<table>
<tr>
<th>Name</th>
</tr>
<% @tasks.completed.each do |task| %>
<tr>
<td><%= task.name %></td>
</tr>
<% end %>
</table>
task_controller.rb index.html.erb
def complete
@task = Task.find(params[:task_id])
@task.completed = true
@task.save
redirect_to task_path
end
routes.rbを
match "tasks/:id/complete" => "task#complete", :as => :complete_task
レールがこのエラーを表示する理由は何ですか?
'@ tasks 'はどこに定義されていますか?私は '@タスク'を見るが '@タスク'は見ない。 –
@muistooshortタスクをタスクに置き換えるべきですか? – Yooku
'@ tasks'はどこかで定義されているか、' Nil:NilClass'の 'NoMethodError:未定義メソッド 'each'を取得しています。あなたが期待しているActiveRecord :: Relationではなく、配列として '@ tasks'を作成しています。 –