如何将<div>与Rails相结合&#34; link_to&#34;?

时间:2016-01-04 16:00:36

标签: ruby-on-rails ruby

我正在创建一个&#34;待办事项网站&#34;。用户可以登录并生成任务和注释。任务完美无缺,但出于某种原因我有一些注释问题。我没有使用任何部分笔记。如果我在 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

问题:我的控制器上的实例变量出了什么问题?如何使其工作?

2 个答案:

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