1

对于我的应用程序,我正在尝试为“用户”制作的“项目”实现富文本编辑器

现在,我正在尝试实现 Redactor Rails ( https://github.com/SammyLin/redactor-rails )。我按照下面的过程。

问题 1:如何使用设计选项重新安装?

问题 2:我在我的数据表中的 Projects 下创建了一个 t.text “描述”。我的项目表单现在使用简单表单。我看到了文本编辑器,但是在按下提交后如何保存在文本编辑器字段中输入的内容?

gem 'redactor-rails'
$ bundle install
$ gem install redactor-rails

添加到 application.js:

//= require redactor-rails

添加到 application.css:

*= require redactor-rails

然后,将以下行放入我的个人“项目”:

<%= text_area_tag :editor, "", :class => "redactor", :rows => 40, :cols => 120 %>
4

2 回答 2

1

你不应该使用原始 text_area_tag方法。您应该使用 simple_form API 方法。这是一个例子(在 Slim 中,但你应该明白):

= simple_form_for(comment) do |f|

  = f.input :content, input_html: { class: 'redactor', rows: '4' }

  = f.button :submit

下一个。Redactor 不会清理用户的输入。您应该手动进行。

控制器代码(特别是创建操作)示例:

class CommentsController
  # used for sanitization user's input
  REDACTOR_TAGS = %w(code span div label a br p b i del strike u img video audio
                  iframe object embed param blockquote mark cite small ul ol li
                  hr dl dt dd sup sub big pre code figure figcaption strong em
                  table tr td th tbody thead tfoot h1 h2 h3 h4 h5 h6)
  REDACTOR_ATTRIBUTES = %w(href)

  # ...

  def create
    params[:comment][:content] = sanitize_redactor(params[:comment][:content])

    comment = Comment.create(params[:comment])

    if comment.save
      # ...
    end
  end

  # ...

  private

  def sanitize_redactor(orig_text)
    stripped = view_context.strip_tags(orig_text)
    if stripped.present? # this prevents from creating empty comments
      view_context.sanitize(orig_text, tags: REDACTOR_TAGS, attributes: REDACTOR_ATTRIBUTES)
    else
      nil
    end
  end 
end
于 2013-04-23T19:18:05.563 回答
1

对于那些不使用 simple_form 的人,这也适用:

<div class="redactor_box">
    <%= f.text_area :content, placeholder: "Content goes here...", :class => "redactor"%>
</div>
于 2013-06-30T21:35:31.760 回答