1

编辑:按照Kiran Kumara的建议, <div id="static_id></div> 在“index.html.erb”末尾添加并更改“edit.js.erb”以包含以下内容 :

jQuery("div#static-id").html("<%=escape_javascript(render 'form')%>");

按“编辑”链接确实会呈现 TinyMCE 编辑器。但是,“常规”text_area 也会加载,其中静态 id div 放置在页面底部的索引中,并且只能从该 text_area 进行编辑。如何启用它以便仅显示 TinyMCE 编辑器并进行实际编辑?


我正在开发一个非常简单的规划器应用程序,并尝试使用 Ajax 将编辑表单加载到索引页面中。该项目中唯一的模型是“Day”模型。我遵循了这个rails cast,但我无法使用 Ajax 加载表单。我使用 TinyMCE 作为编辑表单中的文本区域,并使用tinymce-rails gem 在我的项目中实现 TinyMCE。我继续收到“304 Not Modified”作为 GET 请求的状态。当显式转到对象的编辑路径时,我可以加载 TinyMCE 文本区域。

我一直在寻找解决方案几个小时,但我要么不明白如何实施它们,要么它们已经严重过时。从我读过的内容来看,我认为这可能与索引页面可能会调用多个 TinyMCE 编辑器这一事实有关。有人可以解释为什么这不起作用吗?谢谢!:)

以下是我项目中的相关代码示例:

index.html.erb

我在索引中显示了多个日期,这些日期在视图中显示为列表。这些是“Day”模型的各种实例,每个实例都包含一个待办事项列表。我希望能够编辑从索引页面中选择的列表。

<h1>Tasks</h1>

<ul class="tasks">
    <% @date_range.each do |day| %>
        <li class="<%= time_tense(day.date) %>">
            <%= render "display_tasks", day: day %>
        </li>
    <% end -%>
</ul>

_display_tasks.html.erb

<h2 id="daily_list_<%= day.id %>">
    <%= format_date(day.date) %>
</h2>

<% if day.tasks.blank? %>
    <p>No tasks specified</p>
<% else %>
    <%= raw day.tasks %>
<% end %>

<%= link_to "Edit", edit_day_path(day), id: "#{day.id}", remote: true %>

<%= tinymce %>

编辑.html.erb

<h2 class="<%= time_tense(@day.date) %>" id="list_<%= @day.id %>">
    <%= format_date(@day.date) %>
</h2>
<%= render "form", day: @day %>

编辑.js.erb

$("#edit_daily_list_<%= @day.id %>").hide().after('<%= j render(partial: "form") %>');

_form.html.erb

<%= form_for (@day, remote: true) do |f| %>
    <% if @day.errors.any? %>
      <div class="error_messages">
        <h2><%= pluralize(@day.errors.count, "error") %> prohibited this task from being saved:</h2>
        <ul>
            <% @day.errors.full_messages.each do |msg| %>
              <li><%= msg %></li>
            <% end %>
        </ul>
      </div>
    <% end %>

    <%= f.text_area :tasks, id: @day.id, class: "tinymce" %>

    <div class="actions">
        <p><%= f.submit "Update" %></p>
    </div>
<% end -%>

<%= tinymce %>

days_controller.erb

class DaysController < ApplicationController

    def index
        today = Day.find_by_date(Date.today)
        @date_range = date_range(today)
    end

    def show
        @day = Day.find(params[:id])
    end

    def edit
        @day = Day.find(params[:id])
    end

    def update
        @day = Day.find(params[:id])
        if @day.update_attributes(params[:day])
            redirect_to day_path(@day)
        else
            redirect_to edit_day_path(@day)
        end
    end

    private
        def date_range(days=7, today)
            future_dates = []
            past_dates = []

            (1..days).to_a.each do |day|
                future_dates.push Day.find_by_date(today.date.advance days:  day)
                past_dates.unshift Day.find_by_date(today.date.advance days: -day)
            end

            [future_dates.reverse, today, past_dates.reverse].flatten
        end
end
4

0 回答 0