0

ich einige Probleme habe mit link_to Fern einen Beitrag an einem anderen Controller zu senden ... Das Ergebnis ist nicht ganz das, was ich erwarte, dass ..link_to remote => true verursacht seltsame Routing-Probleme, Rails 3

Ich habe dies in node_content.html.erb:

<% @node.videos.each do |vid| %> 
<div id="vid_vid"><%= link_to image_tag("http://img.youtube.com/vi/#{vid.content}/1.jpg"), :controller => 'videos', :action => "iframize", :video_id => vid.id, :method => :post, :remote => true %></div> 

<% end %> 

Und ich habe dies in videos_controller:

def iframize 
    @video = Video.find(params[:video_id]) 
    respond_to do |format| 
    format.js 
    end 
end 

Und dies in Routen:

resource :videos do 
    collection do 
    post 'iframize' 
    end 
end 

Problem ist, dass, wenn ich auf den Link klicken, ist es mir

http://localhost:3000/videos/iframize?method=post&video_id=20 
zu

nimmt

und ich

Couldn't find Video with id=iframize 

Ich schaute durch zig verschiedene Beispiele und sie scheinen die oben zu empfehlen, aber es funktioniert nicht .. Was mache ich falsch?

Jede Eingabe sehr geschätzt!

Danke!

EDIT:

ich diesen Ansatz jquery Funktion ausprobiert und es funktionierte irgendwie (nur für das erste Video in der Schleife natürlich):

<% @node.videos.each do |vid| %> 
    <%= image_tag("http://img.youtube.com/vi/#{vid.content}/1.jpg", :id => 'img_div') %> 
<div id="vid_vid"> <%= vid.id %></div> 
<% end %> 



$('#img_div').on({ 
    'click': function() { 
    var vid_id = document.getElementById("vid_vid").innerHTML; 
    $.post("/videos/iframize/", {video_id: vid_id}); 
    } 
}); 
+0

Soweit ich sagen kann, verwenden options.so, um Ihre Nutzung von link_to ist richtig. Die Fehlermeldung weist jedoch darauf hin, dass das Problem im Routing und nicht in der Verknüpfung liegt (was die falsche URL erklärt, die von link_to generiert wird). Versuchen Sie "Rake-Routen" auszuführen und bestätigen Sie, dass die gewünschte Route vorhanden ist. Ich verwende immer Symbole für Routen, also versuche, 'post 'iframe' zu' post: iframize' zu ​​wechseln. – Faisal

Antwort

0

Haben Sie rails_ujs über jquery_ujs in Vermögenswerten/application.css Datei

= link_to image_tag("http://img.youtube.com/vi/#{vid.content}/1.jpg"), "url_path", :method => :post, :remote => true 

Konvertieren folgendes in einem Schienen-Pfad: wie iframeize_videos_path (erzeugt über rake routes)

:controller => 'videos', :action => "iframize", :video_id => vid.id, 
+0

hier ist meine Rake Routen: iframize_videos POST /videos/iframize(.:format) {: action => "iframize",: controller => "videos"} wenn ich "iframe_videos_path" setze, komme ich zu localhost/nodes/iframize_videos – Stpn

+0

Oh, und ja, ich habe jquery_ujs in application.js – Stpn

+0

BTW, müssen Sie tun = link_to image_tag ('Pfad'), iframe_videos_path,: remote => true,: video_id => vid.id,: Methode =>: posten – Sairam

0

Sie müssen die URL-Optionen unterscheiden, html

<%= link_to image_tag("http://img.youtube.com/vi/#{vid.content}/1.jpg"), 
{ :controller => 'videos', :action => "iframize", :video_id => vid.id }, 
{ :method => :post, :remote => true} %> 
+0

Das bringt mich zu der Show-Aktion des Videos ... – Stpn

+0

Ich habe die Antwort –

+0

gleichen Effekt aktualisiert - "kann Video mit id = iframize" nicht finden .. – Stpn

Verwandte Themen