Я пытаюсь реализовать Stacked Link Stack в моем приложении Rails, которое является базовым списком дел. Но я не уверен, где бы я разместил код для связанного списка в текущей структуре приложений Rails. Может ли кто-нибудь предложить какие-либо рекомендации? Пойдет ли это в рамках модели или контроллера?Где реализовать привязанный список Stack in Rails app
Скриншот Basic делать списка приложений
Задачи контроллера:
class TasksController < ApplicationController
def create
@task = current_user.tasks.build(task_params)
if @task.save
flash[:notice] = "Task created successfully"
else
flash[:error] = "Error creating task"
end
redirect_to current_user
end
def destroy
@task = current_user.tasks.find(params[:id])
if @task.destroy
flash[:notice] = "Task completed successfully"
else
flash[:error] = "Error completing task"
end
redirect_to current_user
end
private
def task_params
params.require(:task).permit(:name)
end
show.html.erb файл для задач, созданных
<h1>Hello, <%= current_user.email %></h1>
<h2>Create New Task</h2>
<%= form_for [current_user, @task] do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.submit "Create", class: 'btn btn-primary' %>
<% end %>
<h2>Current Tasks</h2>
<% current_user.tasks.each do | task| %>
<p>
<%= task.name %>
<%=link_to [current_user, task], method: :delete do %>
<span class="glyphicon glyphicon-ok"></span>
<% end %>
</p>
<% end %>
Task.rb (модель)
class Task < ActiveRecord::Base
belongs_to :user
end
User.rb (модель)
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
has_many :tasks
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
LinkedList Стек Я хотел бы реализовать в Rails приложения
module LinkedList
class Node
attr_accessor :value, :next_node
def initialize(value, next_node)
@value = value
@next_node = next_node
end
end
class Stack
def initialize
@first = nil
end
def push(value)
@first = Node.new(value, @first)
end
def pop
flash[:notice] = "Task completed successfully" if is_empty?
value = @first.value
@first = @first.next_node
value
end
def is_empty?
@first.nil?
end
end
end