Как бы я показал посты с голосованием с действиями как жемчужина - PullRequest
0 голосов
/ 07 ноября 2019

Во-первых, я использую драгоценный камень https://github.com/ryanto/acts_as_votable

Привет! Я действительно новичок в рельсах и пытаюсь создать приложение, где студент может пройти стажировку в компании. Пока у меня все работает, но я хочу, чтобы студент мог видеть сообщения от компаний, за которые они проголосовали.

Пока это мой контроллер интернатуры, который был создан только с использованием скаффолдинга / не имеетвключил все это.

class InternshipsController < ApplicationController
  before_action :set_internship, only: [:show, :edit, :update, :destroy]
  

  
  def upvote
    @internship = Internship.find(params[:id])
    @internship.liked_by current_student
    redirect_to internships_path
    #can change current_user to any other voter
  end

  def downvote
    @internship = Internship.find(params[:id])
    @internship.disliked_by current_student
    #can change current_user to any other voter
  end

  # GET /internships
  # GET /internships.json
  def index
    @internships = Internship.all
  end

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

Моя модель стажировки

class Internship < ApplicationRecord
     belongs_to :company
     acts_as_votable
end
Модель моего ученика
class Student < ApplicationRecord
  acts_as_voter
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
end

Мои стажировки / index.html.erb, где я хочу, чтобы студент мог «поднять» стажировку.

<% @internships.each do |internship| %>
      <tr>
        <td><%= internship.title %></td>
        <td><%= internship.requirements %></td>
        <td><%= internship.location %></td>
        <td><%= internship.duraton %></td>
        <td><%= internship.deadline %></td>
        <td><%= internship.website %></td>
        <td><%= link_to 'Show', internship %></td>
        <td><%= link_to "upvote", like_internship_path(internship), method: :put %></td>
        <td><%= link_to "downvote", dislike_internship_path(internship), method: :put %></td>

Мои маршруты

Rails.application.routes.draw do
  devise_for :students
  resources :internships do
     member do
     put "like",    to: "internships#upvote"
     put "dislike", to: "internships#downvote"
   end
 end
  devise_for :companies

Пока это работает отлично! Последнее, что я хочу сделать, это заставить студентов показать стажировки, за которые они проголосовали, и я полностью застрял. Я хочу создать новый метод в контроллере, называемый upvoted, и, по его мнению, он будет отображать специально прошедшие тестирование стажировки студентов на этой конкретной странице с голосованием. Я не могу на всю жизнь заставить синтаксис работать для метода для этого. Я что-то упустил в модели? Спасибо

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