Widget incrustado de Rails 3: show.js.erb no parece funcionar

Tengo dos servidores web localhost ejecutándose (webrick); uno en el puerto 3000 (servidor) y otro en el 3001 (página web). Pero esto no tiene sentido porque parece estar roto en el lado del servidor.

En el "servidor", si voy a 'http://localhost:3000/projects/5.js', no se carga nada. Obtengo una pantalla blanca y 'ver fuente de página' ni siquiera está disponible como opción.

Supongo que document.write es el problema, pero no puedo solucionarlo porque no se carga nada. ¿Hay una ruta que necesito tal vez? ¿Hay algo diferente que deba hacer en mis proyectos/espectáculos de acción?

####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

preguntado el 01 de julio de 12 a las 07:07

1 Respuestas

Bueno, una cosa que noté es que estás llamando <iframe src="http://localhost:3000/projects/5.js"></iframe> pero js no es uno de sus formatos de respuesta en el controlador. Agregar format.js al bloque respond_to.

Respondido 03 Jul 12, 20:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.