我的目標是僅向創建列表的用戶顯示「編輯」和「刪除」按鈕。但是,由於某種原因,current_user返回nil。任何想法爲什麼發生這種情況?設計:current_user ==零?
這裏是我的用戶模型:
class User < ActiveRecord::Base
has_many :listings
has_many :thoughts
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
這裏是我的上市型號:
class Listing < ActiveRecord::Base
belongs_to :user
has_many :thoughts
end
<% @listings.each do |listing| %>
<tr>
<td><%= listing.title %></td>
<td><%= listing.school %></td>
<td><%= listing.price %></td>
<td><%= listing.description %></td>
<% if current_user == listing.user %>
<td><%= link_to 'Show', listing %></td>
<td><%= link_to 'Edit', edit_listing_path(listing) %></td>
<td><%= link_to 'Delete', listing, method: :delete, data: { confirm: 'Are you sure?' } %></td>
<% else %>
<td><%= link_to 'Show', listing %></td>
<% end %>
</tr>
<% end %>
這裏是上市控制器創建操作
def create
@listing = Listing.new(listing_params)
respond_to do |format|
if @listing.save
format.html { redirect_to @listing, notice: 'Listing was successfully created.' }
format.json { render action: 'show', status: :created, location: @listing }
else
format.html { render action: 'new' }
format.json { render json: @listing.errors, status: :unprocessable_entity }
end
end
end
這裏是我的create_listings遷移
class CreateListings < ActiveRecord::Migration
def change
create_table :listings do |t|
t.string :title
t.string :school
t.integer :price
t.text :description
t.timestamps
end
end
end
當任何用戶登錄時'current_user'爲'nil' ...您確定用戶始終登錄該地點嗎? – zeroed
你是否說當用戶登錄時'current_user'是**假設**爲零?如果是這種情況,我必須發出什麼命令才能解決當前登錄的用戶?不知道你在問我什麼。 @zeroed –
如果你要做很多這個,而你還沒有使用它,你可能想在這個應用程序中使用'cancan' ... https://github.com/ryanb/cancan – CDub