我正在创建一个"待办事项网站"。用户可以登录并生成任务和注释。任务完美无缺,但出于某种原因我有一些注释问题。我没有使用任何部分笔记。如果我在 index.html.erb 上使用此功能,就像我为任务所做的那样:
<div class="notes">
<%= link_to 'New Note', new_note_path %>
<div class="note">
<div>
<%= link_to note_path(note) do %>
<%= note.content %>
<%= link_to 'X', note, :class => 'task-destroy', method: :delete, data: {confirm: 'Are you sure?'} %>
<% end %>
</div>
<div>
<%= link_to edit_note_path(note) do %>
<%= time_ago_in_words(note.updated_at) %> ago
<% end %>
</div>
</div>
</div>
我明白了:
&#34; NotesController中的NameError #index&#34; - &#34;未定义的局部变量或 方法`note&#39;对于#...&#34;
notes_controller.rb
class NotesController < ApplicationController
before_action :logged_in_user
before_action :set_note, only: [:show, :edit, :update, :destroy]
def index
@notes = current_user.notes
end
def show
end
def new
@note = Note.new
end
def edit
end
def create
@note = current_user.notes.new(note_params)
if @note.save
flash[:success] = "You successfully created a Note!"
redirect_to notes_path
else
render 'new_note_path'
end
end
def update
@note.update(note_params)
if @note.save
flash[:success] = "You successfully updated a Note!"
redirect_to notes_path
else
render 'edit_note_path'
end
end
def destroy
@note.destroy
flash[:success] = "You successfully deleted a Note!"
redirect_to notes_path
end
private
def set_note
@note = Note.find(params[:id])
end
def note_params
params.require(:note).permit(:content)
end
end
问题:我的控制器上的实例变量出了什么问题?如何使其工作?
答案 0 :(得分:3)
在<div class="note">
之前添加循环,以循环索引操作中@notes
中存储的备注列表。
Html应如下所示:
<% @notes.each do |note| %>
<div class="note">
<div>
<%= link_to note_path(note) do %>
<%= note.content %>
<%= link_to 'X', note, :class => 'task-destroy', method: :delete, data: {confirm: 'Are you sure?'} %>
<% end %>
</div>
<div>
<%= link_to edit_note_path(note) do %>
<%= time_ago_in_words(note.updated_at) %> ago
<% end %>
</div>
</div>
</div>
<% end %>
答案 1 :(得分:0)
您的index.html.erb
视图无法访问note
变量。
以下方法中的实例变量是传递给视图的唯一变量:
def index
@notes = current_user.notes
end
你可能需要做类似的事情,
<% @notes.each do |n| >
<%= link_to(n) >
<% end >