只有管​​理员角色可以编辑或删除Notes Rails 4

时间:2014-06-11 18:26:56

标签: ruby-on-rails ruby-on-rails-4

我有一个简单的问题,但仍然无法弄清楚。我的员工角色无法编辑或删除笔记,但他们可以查看和删除笔记。他们也可以创造它们。

我的管理员角色可以查看,创建,编辑和播放删除。我的员工部分正在运作,但我的管理员却没有。我还是新手,所以请忍受我的无知。 我的错误是" Notes#index"中的NameError;和"未定义的局部变量或方法`note'对于#<#:0x007fa7b580c0a0>"

在我的notes / index.html.erb文件中,我的代码如下:

<% if @user.role == "employee" %>

    <%= link_to 'New Note', new_note_path, class: "btn btn-primary btn-lg" %>
    <% @notes.each do |note| %>
         <div class="row notes-row"><h1><%= note.title %></h1></div>
         <div class="row notes-row"><h3>Created By: </h3><%= note.user_name %></div>
         <div class="row notes-row"><h6>Posted On:</h6><%=note.created_at%></div>
         <div class="row notes-row"><%= note.text_box %></div>
         <br>
         <p><%= link_to 'View', note %></p>
         <br>
         <hr>
    <% end %>

<% elsif @user.role == "admin" %>
     <%= link_to 'Add New Job', new_job_path, class: "btn btn-primary btn-lg" %>
     <%= link_to 'Edit', edit_note_path(note) %><%= link_to 'Destroy', note, method: :delete, data: {             confirm: 'Are you sure?' } %>
    <br>
    <p> <% @notes.each do |note| %> | </p>
        <%= link_to 'View', note%>
    <%end%>
<% end%>

我的索引方法是:    def index @users = User.all @user = current_user @notes = Note.all @notes = Note.paginate(:page => params[:page],:per_page => 5) end

1 个答案:

答案 0 :(得分:2)

从这一点出现你的错误;

<%= link_to 'Edit', edit_note_path(note) %><%= link_to 'Destroy', note, method: :delete, data: {             confirm: 'Are you sure?' } %>

此时变量note未知。

你可以这样重新考虑它;

<% if @user.role == "employee" %>
    <%= link_to 'New Note', new_note_path, class: "btn btn-primary btn-lg" %>
<% end %>

<% @notes.each do |note| %>
    <% if @user.role == "employee" %>
         <div class="row notes-row"><h1><%= note.title %></h1></div>
         <div class="row notes-row"><h3>Created By: </h3><%= note.user_name %></div>
         <div class="row notes-row"><h6>Posted On:</h6><%=note.created_at%></div>
         <div class="row notes-row"><%= note.text_box %></div>
         <br>
         <p><%= link_to 'View', note %></p>
         <br>
         <hr>
    <% end %>
    <% if @user.role == "admin" %>
        <%= link_to 'Add New Job', new_job_path, class: "btn btn-primary btn-lg" %>
        <%= link_to 'Edit', edit_note_path(note) %><%= link_to 'Destroy', note, method: :delete, data: {             confirm: 'Are you sure?' } %>
    <% end %>
<% end %> 
<br>
<% if @user.role == "admin" %>
    <p> <% @notes.each do |note| %> | </p>
        <%= link_to 'View', note%>
    <%end%>
<% end %>

可以进一步清理代码。