我正在使用devise gem。我的項目的目的用戶可以上傳文件&刪除他們自己的文件,但不是其他用戶的文件。那麼,我寫「用戶?」確保正確的用戶只能顯示刪除按鈕的方法。我還確保刪除文件的'correct_user'方法。但現在我正面臨這個問題「/Mode_Files上的NoMethodError ..」 「未定義的方法`user?' 「未定義的方法`用戶?' in rails4
這裏是我的upload_files_controller.rb文件:
class UploadFilesController < ApplicationController
before_action :logged_in
before_action :correct_user, only: :destroy
def index
@upload_files = UploadFile.all
end
def new
@upload_file = UploadFile.new
end
def create
@upload_file = current_user.upload_files.build(upload_params)
if @upload_file.save
redirect_to upload_files_path, notice: "The file #{@upload_file.name} has been uploaded."
else
render "new"
end
end
def destroy
upload_file = UploadFile.find(params[:id]).destroy
redirect_to upload_files_path, notice: "The file #{upload_file.name} has been deleted."
end
def user?(check_user)
check_user == current_user.id
end
private
def upload_params
params.require(:upload_file).permit(:name, :upload_file)
end
def logged_in
if admin_signed_in?
return true
else
authenticate_user!
end
end
def correct_user
@upload_file = current_user.upload_files.find_by(id: params[:id])
redirect_to root_url if @upload_file.nil?
end
end
這裏是我的upload_files/index.html.erb文件:
<% @upload_files.each do |file| %>
<tr>
<td><%= file.name %></td>
<td><%= link_to "Download File", file.file_name_url %></td>
<%if admin_signed_in? %>
<td><%= button_to "Delete", file, method: :delete, class: "btn btn-danger", confirm: "Are you sure that you wish to delete #{file.name}?" %></td>
<% else user?(file.user_id) %>
<td><%= button_to "Delete", file, method: :delete, class: "btn btn-danger", confirm: "Are you sure that you wish to delete #{file.name}?" %></td>
<% end %>
</tr>
<% end %>
我是怎麼了?請給我一個方法。
感謝, Mezbah
謝謝。它的工作。但我仍然有一個問題。 「所有用戶都看到刪除按鈕」。我想隱藏誰是不正確的用戶。 – Mezbah 2014-08-28 10:31:57
@Mezbah它現在應該工作。順便說一句,你的方法很奇怪。 – 2014-08-28 10:38:38