Rails 3 嵌入式小部件:show.js.erb 似乎不起作用

Rails 3 embedded widget: show.js.erb doesn't appear to work

本文关键字:erb js 不起作用 show 嵌入式 小部 Rails      更新时间:2023-09-26

我有两个本地主机网络服务器正在运行(webrick);一个在端口3000(服务器),一个在3001(网页)。但这毫无意义,因为它似乎在服务器端被破坏了。

在"服务器"上,如果我转到"http://localhost:3000/projects/5.js",则不会加载任何内容。我得到一个白屏,"查看页面源代码"甚至不能作为选项使用。

我猜 document.write 是问题所在,但我无法对其进行故障排除,因为没有任何内容加载。也许我需要一条路线吗?在我的项目/节目行动中,我需要做一些不同的事情吗?

####The website embedded code:
<iframe src="http://localhost:3000/projects/5.js"></iframe>
####projects_controller.rb
def widget
   @project = Project.find(params[:id])
end
def show
  @project = Project.find(params[:id])    
  respond_to do |format|
    format.html { render :layout => 'application_project' }
    format.json { render json: @project }
  end
end
####projects/show.js.erb
document.write("<%= escape_javascript(content_tag(:iframe, '', :src => widget_project_url(@project))).html_safe %>");
####projects/widget.html.erb
<div id="project-embed-widget">
    <h3><%= link_to @project.name, @project %></h3>
    <% if @project.funding? %>
        <h4>
        <% if @project.backers.nil? %>
            0
        <% else %>
            <%= @project.backers.count %>
        <% end %>
        BACKERS</h4>
        <% @project.calc_goal_collected %>
        <h4><%= number_to_currency(@project.goal_collected, :unit => "$") %></h4>
        <h4>PLEDGED OF <%= number_to_currency(@project.goal, :unit => "$") %> GOAL</h4>
        <h4><%= @project.time_to_go[:time] %>
        <%= @project.time_to_go[:unit].upcase %> TO GO</h4>
        <br />
        <%= render "funding_message" %>
        <br />
  <% else %>
      <%= @project.about %>
  <% end %>
  </div>
####routes.rb
resources :projects do
  member do
    get 'widget'
  end
end

,我注意到的一件事是你正在调用<iframe src="http://localhost:3000/projects/5.js"></iframe>js不是控制器中的响应格式之一。 将format.js添加到respond_to块。