2014-01-06 44 views
-1

好吧,我對鐵軌相當陌生。我已成功創建了一個存儲登錄信息的rails應用程序。我使用devise進行用戶管理並安裝了cancan,但不知道如何使用它。如何僅在Ruby on Rails中向登錄用戶顯示帖子?

不管怎麼說,

現在,如果您登錄與否沒有關係,該網站顯示你已經被任何用戶輸入的所有的「後」或「主菜」。我需要一種方法來限制這種只顯示後由當前登錄的用戶中所做的

我已經通過研究,我需要在這裏做一些發現:

class FtpLoginsController < ApplicationController 
    before_action :set_ftp_login, only: [:show, :edit, :update, :destroy] 
    # GET /ftp_logins 
    # GET /ftp_logins.json 
    def index 
    @ftp_logins = FtpLogin.all 
    end 

    # GET /ftp_logins/1 
    # GET /ftp_logins/1.json 
    def show 
    end 

    # GET /ftp_logins/new 
    def new 
    @ftp_login = FtpLogin.new 
    end 

    # GET /ftp_logins/1/edit 
    def edit 
    end 

    # POST /ftp_logins 
    # POST /ftp_logins.json 
    def create 
    @ftp_login = FtpLogin.new(ftp_login_params) 

    respond_to do |format| 
     if @ftp_login.save 
     format.html { redirect_to @ftp_login, notice: 'Ftp login was successfully created.' } 
     format.json { render action: 'show', status: :created, location: @ftp_login } 
     else 
     format.html { render action: 'new' } 
     format.json { render json: @ftp_login.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # PATCH/PUT /ftp_logins/1 
    # PATCH/PUT /ftp_logins/1.json 
    def update 
    respond_to do |format| 
     if @ftp_login.update(ftp_login_params) 
     format.html { redirect_to @ftp_login, notice: 'Ftp login was successfully updated.' } 
     format.json { head :no_content } 
     else 
     format.html { render action: 'edit' } 
     format.json { render json: @ftp_login.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /ftp_logins/1 
    # DELETE /ftp_logins/1.json 
    def destroy 
    @ftp_login.destroy 
    respond_to do |format| 
     format.html { redirect_to ftp_logins_url } 
     format.json { head :no_content } 
    end 
    end 

    private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_ftp_login 
     @ftp_login = FtpLogin.find(params[:id]) 
    end 

    # Never trust parameters from the scary internet, only allow the white list through. 
    def ftp_login_params 
     params.require(:ftp_login).permit(:client_name, :website_name, :ftp_login, :ftp_password, :notes) 
    end 
end 

如果有人能討好在這裏給我正確的方向,這將是太棒了!

在此先感謝。

回答

0

爲您首先必須確保它關係到你的行動之前,該用戶已登錄。所以你需要一個之前的過濾器。的authenticate_user!是由設計給出的方法。因此,如果用戶沒有登錄,他會重定向到登錄頁面自動

before_filter :authenticate_user!, only: [:posts, :entries] 

,用於收集特定用戶

@posts = current_user.posts 

,或者如果它是未來的節目某一職位,你的崗位可以做

@post = current_user.posts.where(id: params[:id]) 
+0

好吧,這是我.. 類FtpLoginsController jhammond2012

+0

你可以粘貼你在FtpLogin和用戶模型之間建立的關係嗎 –

+0

有沒有辦法直接與你聯繫? – jhammond2012

0

您可以使用before_filter :authenticate_user!, only: [:posts, :entries]來限制登錄用戶查看這些操作。

限制用戶只查看他們所創建的帖子,你可以創建自己的過濾器一樣

def check_user 
    redircet_to :back, notice: "Restricted area!" if current_user.posts.include?(@post) 
end 
+0

你期待從current_user.posts.include?(@ post)得到什麼?你能解釋一下嗎? –

+0

這個過濾器可以在更新,編輯,顯示等操作中使用,當我們在像'find_post'這樣的過濾器中已經設置了'@ post'變量時。當這個過濾器運行,你會得到500錯誤,如果用戶沒有登錄 –

+0

第一件事!' –