Во-первых, я использую драгоценный камень 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, и, по его мнению, он будет отображать специально прошедшие тестирование стажировки студентов на этой конкретной странице с голосованием. Я не могу на всю жизнь заставить синтаксис работать для метода для этого. Я что-то упустил в модели? Спасибо