gpt4 book ai didi

ruby-on-rails - 使用 Rails gem 'best_in_place' 进行内联编辑 - 错误 : new lines are lost after edit on textarea

转载 作者:行者123 更新时间:2023-12-04 02:05:57 27 4
gpt4 key购买 nike

我正在使用 best_in_place gem 在 Rails 应用程序中进行一些内联​​编辑。

我的对象的属性之一是 text 类型,并且我希望它在文本区域中进行编辑,所以我这样做了:

<%= best_in_place @myobject, :description, :type => :textarea %>

它可以工作,但是当不被编辑时,所有返回 (\n) 都会被删除。

我尝试使用 simple_format,添加 :display_with => :simple_format传递给 best_in_place 的选项:
<%= best_in_place @myobject, :description, :type => :textarea, :display_with => :simple_format %>

未编辑时,新行将按预期显示。但是点击进入版本被破坏了,并且在上面添加了一个新的破折号。单击它会显示一个 textarea 框,但它是空的,并且在那里输入的文本不会保存回我的对象​​。

我的属性中保存的内容只是纯文本,它不包含任何 html。

这个问题(和补丁)似乎与我的问题有关: https://github.com/bernat/best_in_place/pull/111
但是,当应用补丁(手动,到文件 .../gems/best_in_place-1.0.6/spec/spec_helper.rb )时,我仍然遇到同样的问题。

最佳答案

我遇到了同样的问题,并通过绑定(bind)到 best_in_place documentation 中所述的“ajax:success”事件来解决它。并将新行转换为 <br />的。

$('.best_in_place').bind('ajax:success', function(){ this.innerHTML = this.innerHTML.replace(/\n/g, '<br />') });

您还可以选择使用轻量级标记语言,例如 Textile 或 Markdown,而不是简单的换行符。可以找到这些的 Javascript 转换器 here (textile)here (markdown) .

我选择了 Textile,因为我可以在 best_in_place 的 display_with 选项中使用 textilize 方法。

更新的javascript:
$('.best_in_place').bind('ajax:success', function(){ $(this).JQtextile('textile', this.innerHTML) });

此外,如果您只想在 best_in_place textareas 上出现这种行为,您可以检查 data-type 属性:
$('.best_in_place').bind('ajax:success', function(){ 
if ($(this).attr('data-type') == 'textarea')
$(this).JQtextile('textile', this.innerHTML)
});

最后,匹配服务器端的转换:
:display_with => lambda { |v| textilize(v).html_safe } // the RedCloth gem may be required.

关于ruby-on-rails - 使用 Rails gem 'best_in_place' 进行内联编辑 - 错误 : new lines are lost after edit on textarea ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9619902/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com