При нажатии на имя пользователя другого пользователя ссылки на мой профиль вместо профиля пользователя - PullRequest
0 голосов
/ 06 мая 2019

Мне нужна помощь с этим моим кодом, который отображает список сообщений пользователей вместе с их именем пользователя. Что я хочу, это когда я нажимаю на имя пользователя определенного сообщения, он должен отправить меня в профиль этого пользователя.вместо этого он отправляет мой профиль или профиль текущего пользователя, пока я хочу, чтобы он связывал меня с именем пользователя, на который я нажал профиль.(например, когда вы нажимаете на имя пользователя в Instagram, оно связывает вас с профилем пользователя, чтобы вы могли подписаться на него или отменить подписку и просмотреть его сообщение). Пожалуйста, мне нужна помощь.что я не делаю правильно в моем коде.я на рельсах 5.2.3 и ruby ​​2.3.3

Дом


<div class="posts">
  <% @posts.each do |post| %>
    <section class="post">
      <div class="user">
        <div class="avatar">

          <img src="assets/avater.jpg">

        </div>
          <%= link_to post.user.username, user_path(post.user), class: 'username' %>
      </div>
      <%= image_tag post.image, class: 'main-image' %>
      <div class="description">
        <% post.description.to_s.split(' ').each do |word| %>
              <% if word.start_with?('#') %>
              <%= link_to word, search_index_path(query: word) %>
              <% else %>
                <%= word %>
                <% end %>
                <% end %>
      </div>
    </section>
  <% end %>
  <%= paginate @posts %>
</div>

маршруты

Rails.application.routes.draw do
  get 'search/index'
  devise_for :users
  get 'home/index'
    resources :posts
  root 'home#index'
  resources :users, only: [:show, :edit, :update]
  resources :posts, only: [:new, :create, :show, :destroy]
end

Пользователи контроллер

class UsersController < ApplicationController
    before_action :find_user


    def show
     @user  = User.find(params[:id])
     @posts = current_user.posts.order(created_at: :desc)
    end

    def edit

    end

    def update
      current_user.update(user_params)
      redirect_to current_user
    end

    private

    def find_user
      @user = User.find(params[:id])

    end

    def user_params
      params.require(:user).permit(:username, :name, :website,:bio, :email, :phone, :gender, :avatar)
    end
end

почтовый контроллер

class PostsController < ApplicationController

def new
  @post = current_user.posts.build
end

  def create
     @post = Post.create(post_params)
      redirect_to root_path
    end

    def show
      @post = Post.find(params[:id])
    end

    def destroy
      @post = current_user.posts.find(params[:id])
      @post.destroy

      redirect_to user_path(current_user)
    end

    private

    def post_params
      params.require(:post).permit(:description, :image, :user_id)
    end
end

домашний контроллер

class HomeController < ApplicationController
before_action :authenticate_user!

  def index
    @posts = Post.order(created_at: :desc).page(params[:page]).per(5)
  end
end

1 Ответ

1 голос
/ 06 мая 2019

Полагаю, проблема в том, что в методе show из users_controller вы получаете сообщения от current_user вместо пользователя, это должно быть @posts = @user.posts.order(created_at: :desc)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...