Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在rails中的日历中添加链接以编辑html视图中的事件(使用哈希生成)?_Html_Ruby On Rails_Hash_Calendar_Link To - Fatal编程技术网

如何在rails中的日历中添加链接以编辑html视图中的事件(使用哈希生成)?

如何在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

我想在日历视图中插入一个链接来编辑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”%> 参数[: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>