如何在rails中的日历中添加链接以编辑html视图中的事件(使用哈希生成)?
我想在日历视图中插入一个链接来编辑seance路径(seance)。 我的日历是这样制作的: lib/calendar.rb app/Controllers/seances\u controller.rb app/views/seanse/calendrier.html.erb如何在rails中的日历中添加链接以编辑html视图中的事件(使用哈希生成)?,html,ruby-on-rails,hash,calendar,link-to,Html,Ruby On Rails,Hash,Calendar,Link To,我想在日历视图中插入一个链接来编辑seance路径(seance)。 我的日历是这样制作的: lib/calendar.rb app/Controllers/seances\u controller.rb app/views/seanse/calendrier.html.erb Calendrier des Projections (意大利国家石油公司) 参数[:liue],日期:@date,:format=>:pdf),:format=>:pdf,:class=>“btn btn主btn lg
Calendrier des Projections
(意大利国家石油公司)
参数[:liue],日期:@date,:format=>:pdf),:format=>:pdf,:class=>“btn btn主btn lg”%>
参数[:liue],日期:@date-1.weeks),类:“btn btn default”do%>
参数[:liue],日期:@date+1.weeks),类别:“btn btn default”do%>
我曾尝试在字符串生成器、单元格生成器(day、seance)中添加链接,但无法解决该问题。我想,它一定是在视图中,也许,代码必须更改??
有人有办法吗?如果需要,您可以在此处查看代码:没有人告诉我该怎么做。我已自行解决此问题并更改了代码。我想在日历视图中插入一个链接来编辑seance路径(seance)。我的日历是这样制作的:要查看解决此问题的更好方法,请查看@seances中的代码现在位于控制器中并在视图中调用
class Calendar < Struct.new(:view, :date, :callback)
def table(lieu)
content_tag :table, class: "calendar table table-bordered table-striped" do
header + week_rows + titreseances(lieu)
end
end
HEADER = %w[Mercredi Jeudi Vendredi Samedi Dimanche Lundi Mardi]
START_DAY = :wednesday
def header
content_tag :tr do
HEADER.map { |day| content_tag :th, day }.join.html_safe
end
end
def weeks
first = date.beginning_of_week(START_DAY)
last = date.end_of_week(START_DAY)
(first..last).to_a.in_groups_of(7)
end
delegate :content_tag, to: :view
def week_rows
weeks.map do |week|
content_tag :tr do
week.map { |day| day_cell(day) }.join.html_safe
end
end.join.html_safe
end
def day_cell(day)
content_tag :td, view.capture(day, &callback), class: day_classes(day)
end
def day_classes(day)
classes = []
classes << "today" if day == Date.today
classes << "nodate" if day.month != date.month
classes.empty? ? nil : classes.join(" ")
end
def titreseances(lieu)
weeks.map do |week|
content_tag :tr do
week.map { |day| titreseances_cell(lieu, day) }.join.html_safe
end
end.join.html_safe
end
def titreseances_cell(lieu, day)
seances = Seance.lieuxtest[lieu].compact.map{|seance| seance if seance.todays_seance(day)}.compact
content_tag :td, cell_builder(day, seances), class: day_classes(day)
end
def cell_builder(day, seances)
to_display = ""
seances.each do |seance|
to_display << seance.string_builder
end
to_display.html_safe
end
class Seance < ActiveRecord::Base
belongs_to :film, :inverse_of => :seances
accepts_nested_attributes_for :film, :allow_destroy => true
belongs_to :village
def self.lieuxtest
lieuxtest = Hash[
"lamastre" => Seance.all.order(horaire: :asc).map{ |seancelamastre| seancelamastre if seancelamastre.lieu.upcase == "LAMASTRE" },
"vernoux" => Seance.all.order(horaire: :asc).map{ |seancevernoux| seancevernoux if seancevernoux.lieu.upcase == "VERNOUX" },
"chalencon" => Seance.all.order(horaire: :asc).map{ |seancechalencon| seancechalencon if seancechalencon.lieu.upcase == "CHALENCON" },
"hors-circuit" => Seance.all.order(horaire: :asc).map{ |seanceautre| seanceautre if seanceautre.lieu.upcase != "LAMASTRE" &&
seanceautre.lieu.upcase != "VERNOUX" && seanceautre.lieu.upcase != "CHALENCON" },
"tous les lieux" => Seance.all.order(horaire: :asc).map{|seance| seance }
]
end
def todays_seance(day)
if self.horaire.midnight == day.midnight
true
end
end
def string_builder
string = "<ul>"
string << "<li>"
string << "<strong>#{self.lieu.upcase}</strong>," if self.lieu
string << " <strong>#{self.horaire.strftime("%Hh%M")}</strong>" if self.horaire
string << ", <strong>#{self.film.titrefilm.upcase}</strong> " if self.film.titrefilm
string << " , Projection: "
string << " <strong><em>#{self.projection.capitalize}</strong></em>" if self.projection
string << ", Caisse: "
string << " <strong><em>#{self.caisse.capitalize}</strong></em>" if self.caisse
string << "</li>"
string << "</ul>"
end
module SeancesHelper
def seances (date = Date.today, &block)
Calendar.new(self, date, block).table(params[:lieu])
end
end
def calendrier
@seances = Seance.all
@lieu = params[:lieu]
@date = params[:date] ? Date.parse(params[:date]) : Date.today
<center><h1 class="text-center">Calendrier des Projections</h1></center>
<p class="text-center">(Pour éditer, naviguez dans l'onglet Séances)</p>
<div class="container">
<div class="actions">
<%= link_to 'calendrier pdf (imprimer)', calendrier_path(:lieu => params[:lieu], date: @date, :format => :pdf), :format => :pdf, :class => "btn btn-primary btn-lg" %>
</div>
<div class="row">
<div class="col-md-12 text-center">
<div class="well controls">
<%= link_to calendrier_path(:lieu => params[:lieu], date: @date - 1.weeks), class: "btn btn-default" do %>
<div class="glyphicon glyphicon-backward"></div>
<% end %>
<%= "#{@date.strftime("semaine N°%W %B")} #{@date.year}" %>
<%= link_to calendrier_path(:lieu => params[:lieu], date: @date + 1.weeks), class: "btn btn-default" do %>
<div class="glyphicon glyphicon-forward"></div>
<% end %>
</div>
</div>
</div>
<% lieu = params[:lieu] %>
<h2 class="text-center"><%= lieu.upcase %></h2>
<div class="row">
<div class="col-md-12">
<%= seances @date do |date| %>
<%= date.day %>
<% end %>
</div>
</div>