gpt4 book ai didi

javascript - Ruby on rails/Javascript 小部件

转载 作者:行者123 更新时间:2023-11-29 18:26:09 25 4
gpt4 key购买 nike

所以这就是我的观点,我尝试按照一些教程阅读所有引用资料,最后来自 http://8raystech.com/2011/11/28/how-to-create-embeddable-widgets-with-rails

我花了将近 2 天的时间来寻找明显在某处犯下的小错误,因为我是 ruby​​ on rails 的新手。我认为这可能是一个路由错误,因为当我通过 Chrome 检查元素时,我看到以下错误:编辑:

"GET http://localhost:3000/widget 500 (Internal Server Error)"

我拼命地尝试了很多东西,但这是我当前的代码:

我的小部件 Controller 如下所示:(widget_controller.rb)

class WidgetController < ApplicationController
def show
@content = render_to_string(:partial => 'widget/embed', :layout => false)
end
end

我的 View 使用 javascript (show.erb.html)

(function() {
document.write(<%= @content.to_json %>)
})()

我认为部分并不是很重要,但这里有一个例子:(_embed.erb.html)

<style>...</style>
<div class="widget-communication">
<div>Bla bla bla</div>
...
</div>

最后,在 routes.rb 中

...
match 'widget', to: 'widget#show'
...

所以我在本地测试使用这个加载我的小部件:

<script src="http://localhost:3000/widget" type="text/javascript"></script>

最佳答案

我不知道这个小部件,但您似乎仍然希望将部分呈现为 HTML 而不是 JS。您只是将一个字符串分配给值内容,它想使用默认渲染操作。尝试不使用 .erb 而是使用 .js 文件扩展名 (show.js.erb),因此:

在 Controller 中你仍然需要返回一个集合,即:

class WidgetController < ApplicationController
respond_to :js, only: :show

def show
@user = User.find params[:id]
end
end

并在 View 中 (show.js.html):

document.write("<%= escape_javascript(render(:partial => 'widget/embed', :locals => {:user => @user})).html_safe) %>");

虽然我不推荐使用respond_to :js。很难调试,速度很慢,而且混合了 html 和 js 逻辑。

关于javascript - Ruby on rails/Javascript 小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12898338/

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