4 Bir kullanıcı oturum eğer ben sadecebefore_filter: hariç authenticate_user !,: [: endeksi]/Raylar
before_filter :authenticate_user!, except: [:index]
kullanılan 3 bir Listings Controller
(Kullanıcı Sistemini Vasiyetle) ve yılında Raylar kontrol etmek var belirli bir listeyi görüntülemeden önce.
Ana Sayfam (İndeks) bir alttan bir görünümü gösterir Listeler, Kullanıcı bunları görebilir, ancak görebilmek için bir tanesini tıklatır tıklatırsa, Giriş Sayfasına yeniden yönlendirilir. benim denetleyicisi i Raylar 4 şey ise
Listing.new -> current_user.listings.new
yerine vardı yüzden
değişmiş gibi görünüyor ve ben bunu yapmanın doğru yolunu bulamıyorum.
ben biraz arandı ve komut şimdi Index görüntüleyebilirsinizbefore_action :authenticate_user!, :except => [:index]
A Misafir olarak değiştirildi ettiğini fakat bir Listesinde tıklarsa, o giriş sayfasına yönlendirildi yerine ben değil bu hatayı al.
NoMethodError in ListingsController#show
undefined method `listings' for nil:NilClass
# Use callbacks to share common setup or constraints between actions.
def set_listing
@listing = current_user.listings.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
Benim Listeleri Kontrol
class ListingsController < ApplicationController
before_action :set_listing, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!, :except => [:index]
# GET /listings
# GET /listings.json
def index
@listings = Listing.order("created_at desc")
end
# GET /listings/1
# GET /listings/1.json
def show
end
# GET /listings/new
def new
@listing = current_user.listings.build
end
# GET /listings/1/edit
def edit
end
# POST /listings
# POST /listings.json
def create
@listing = current_user.listings.build(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
# PATCH/PUT /listings/1
# PATCH/PUT /listings/1.json
def update
respond_to do |format|
if @listing.update(listing_params)
format.html { redirect_to @listing, notice: 'Listing was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @listing.errors, status: :unprocessable_entity }
end
end
end
# DELETE /listings/1
# DELETE /listings/1.json
def destroy
@listing.destroy
respond_to do |format|
format.html { redirect_to listings_url }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_listing
@listing = current_user.listings.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def listing_params
params.require(:listing).permit(:title, :description, :image)
end
end
DÜZENLEME: SORUN 2
Kullanıcı Giriş yapılan başka başka kullanıcı im oluşturulan bir liste görüntülemeye çalışırsa alma bu ->
ve set_listing
önce günlük
gibi
nil
değil
current_user
böylece,set_listing
önceauthenticate_user
çağırmanız gerekir set_listing'tan önce 'authenticate_user' yapmak – SanthoshYani, authenticate_user öğesini set_listing satırının üzerine mi taşımak istiyorsunuz? –
evet. Bunu denedin mi? – Santhosh