Cześć!
Od pewnego czasu próbuję swoich sił w RoR i podczas ćwiczeń nad pewnym projektem natrafiłem na pewien problem, na który nie mogę znaleźć odpowiedzi w G ani tu na forum.
Korzystam z gemu devise do rejestracji użytkowników. Chcę, wyciągnąć posty konkretnego użytkownika, ale nie tego zalogowanego bo z tym sobie poradziłem. Chcę, aby po kliknięciu w autora wpisu, pojawiała się lista z jego wszystkimi wpisami.
Poniżej controller z postami:
`class PinsController < ApplicationController
before_action :find_pin, only: [:show, :edit, :update, :destroy, :upvote]
before_action :authenticate_user!, except: [:index, :show]
before_action :pin_owner, only: [:edit, :update, :destroy]
def index
@pins = Pin.all.order(“created_at DESC”)
end
def show
end
def new
#@pin = Pin.new
@pin = current_user.pins.build
end
def create
#@pin = Pin.new(pin_params)
@pin = current_user.pins.build(pin_params)
if @pin.save
redirect_to @pin, notice: "Successfully created new Pin!"
else
render 'new'
end
end
def edit
end
Aby zablokować edycję i usuwanie pinów innym użytkownikom niż autor
def pin_owner
unless @pin.user_id == current_user.id
flash[:notice] = ‘Access denied as you are not owner of this Pin’
redirect_to pins_path
end
end
def userpin
@pins = current_user.pins
end
def mypins
@pins = current_user.pins
@user = current_user
end
def update
if @pin.update(pin_params)
redirect_to @pin, notice: “Pin was successfully updated!”
else
render ‘edit’
end
end
def destroy
@pin.destroy
redirect_to root_path
end
def upvote
@pin.upvote_by current_user
redirect_to :back
end
private
def pin_params
params.require(:pin).permit(:title, :description, :image)
end
def find_pin
@pin = Pin.find(params[:id])
end
end
`
Metoda mypins odpowiada za wyświetlanie wszystkich wpisów zalogowanego użytkownika, natomiast userpin docelowo ma wyświetlać listę wpisów konkretnego użytkownika.
Model pin posiada belongs_to :user, a model user has_many :pins.
Plik routes.rb:
`Rails.application.routes.draw do
devise_for :users
resources :pins do
member do
put “like”, to: “pins#upvote”
end
end
root “pins#index”
get ‘userpin’ => ‘pins#userpin’
get ‘mypins’ => ‘pins#mypins’
end
`
Czy ktoś podpowie jak rozwiązać tę sprawę?