2016-06-19 4 views
0

Ich baue eine App mit Ruby on Rails. Die Version von Rails und Ruby sind wie oben aufgeführt.Wie kann ich Javascript/Jquery in Rails 4.2.4 mit Ruby 2.2.3 implementieren?

Mein Ziel ist es, JavaScript/Jquery in meine Mindmap-Indexansichten zu implementieren, so dass sie Informationen dynamisch in meine Seite einfügen können, ohne die gesamte Seite neu laden zu müssen. Es wird also ein Link sein, auf den geklickt wird, der das Mindmap-Formular anzeigt. Bei der Übergabe des Formulars sollte das Formular verschwinden und die neuen Daten an die angegebenen Div-Views angehängt werden. - Bisher konnte ich das Mindmap-Formular anzeigen, sobald ich auf den neuen Link klicke, aber das Formular verschwindet nicht bei der Einreichung des Formulars. Ich war in der Lage, dem Benutzer zu erlauben, die Informationen einzugeben und zu senden, aber die Informationen zeigen nur, nachdem ich eine volle Seite neu lade.

Ich habe eine Nummer versucht, aber nichts scheint zu helfen.

Jemand bitte helfen. Wenn du in Chicago wohnst, schulde ich dir ein Bier :).

Unten sind die Controller, js und Ansichten Datei.

class MindmapsController < ApplicationController 

    before_action :find_capsule, only: [:new, :index, :create, :show, :update, :destroy] 
    before_action :find_mindmap, only: [:show, :edit, :index, :update, :destroy] 

    before_action :authenticate_author! 

    def index 
    @mindmaps = Mindmap.all.order('created_at DESC') 

    end 

    def new 
    @mindmap = Mindmap.new 
    end 

    def create 
    @mindmap = Mindmap.new(mindmap_params) 
    if @mindmap.save 
     respond_to do |format| 
     format.html {redirect_to mindmaps_path , notice:"You have successfully created a Mindmap"} 
     format.js 
     end 
    else 
     render 'new' 
    end 
    end 

    def show 
    end 

    def edit 
    end 

    def update 
    if @mindmap.update(mindmap_params) 
     redirect_to @mindmap , notice:" You have successfully updated Your Mindmap" 
    else 
     render 'edit' 
    end 
    end 

    def destroy 
    @mindmap.destroy 
    redirect_to mindmaps_path 
    end 

    def find_mindmap 
    @mindmap = Mindmap.find_by(params[:id]) 
    end 

    def find_capsule 
    @capsule = current_author.capsules.find_by(params[:id]) 
    end 

    def mindmap_params 
    params.require(:mindmap).permit(:src, :src_purpose, :capsule_id, :profile_id) 
    end 
end 

JavaScript-Dateien befindet sich unter der Mindmap sind Ansichten, Ordner als FYI

new.js.erb

$("a#new_mindmap_link").hide().after("<%= j render('form')%>"); 

create.js.erb

$("form#new_mindmap").remove(); 
$("a#new_mindmap_link").show(); 
$("div#mindmap").append("<%= j render(@mindmaps) %>"); 

Mindmap Indexseite

Mindmap # Index

<%= link_to "Create Mindmap", new_mindmap_path, id:"new_mindmap_link", remote: true %> 
<% @mindmaps.each do |mindmap| %> 
<div class="mindmap">  
    <div>Source: <%= mindmap.src %></div> 
    <div class="meta"> 
    <%= link_to time_ago_in_words(mindmap.created_at) + " ago" , mindmap %> 
     <span class="admin"><%= link_to "Edit", edit_mindmap_path(mindmap) %> 
      <%= link_to "Delete", mindmap , method: :delete, data: { confirm: "Are you sure you want to delete this Mindmap" } %> 
     </span> 
    </div> 
    </div> 
<% end %> 

Mindmap Formular

<div class="col-md-4 mindmap-container"> 
    <%= simple_form_for @mindmap, remote: true do |f| %> 
    <%= f.input :src, as: :url, class:'form-control', label: false, placeholder:"Add a URL" %> 
    <%= f.input :src_purpose, as: :text, class: 'form-control', label: false, placeholder: "Add a description to your URL"%> 
    <%= f.input :capsule_id, label: false, collection: Capsule.all, default: 'Select a capsule', label_method: :title %> 
    <%= f.input :profile_id, label: false, collection: Profile.all, default: 'Select a Profile ID',label_method: :profile_name %> 
    <%= f.button :submit, class:'btn btn-primary' %> 
    <% end %> 
</div> 
+0

hilft bist du hier eine Menge Code zeigt. Kannst du eingrenzen, wo dein Problem auftritt, und es etwas ausführlicher beschreiben? –

+0

Ich habe ein Problem mit dem Javascript. Hier ist, was ich versuche, basierend auf einem Tutorial, das ich auf youtube gefunden habe, hier ist der Link. https://www.youtube.com/watch?v=FBxVN7U1Qsk, ich versuche das genau aber auf der Indexseite dieses Controllers grundsätzlich zu tun. –

+0

Es klingt wie alles in Ihrem Code funktioniert, außer dass die Seite neu geladen werden muss, um einige jQuery auszuführen. Dies könnte ein Turbolink-Problem sein. Versuchen Sie [Entfernen von Turbolinks] (http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4) oder sehen Sie [diese Antwort] (http://stackoverflow.com/questions/18770517/rails-4-how-to-use-document-ready-with-turbo-links) für die Vermeidung von '$ (bereiten) Probleme bei der Verwendung von Turbolinks. –

Antwort

0

Wenn Sie Ihre Protokolle überprüfen, ich zweifle, ob die js.erb Ansichten überhaupt genannt werden, weil die Aktion nur zu reagieren weiß auf der html Moment. Ich denke, eine Möglichkeit, das Problem zu lösen, ist ein respond_to Block als solche Ihre erstellen Aktion

def create 
    @muse = Muse.new(muse_params) 
    @muse.author_id = current_author.id 
    if @muse.save 
     respond_to do |format| 
     format.html { redirect_to @muse, notice: "You have successfully added your muses" } 
     format.json 
     end 
    else 
     render :new 
    end 
    end 

Lassen Sie mich wissen zu addieren, wenn das überhaupt

+0

Entschuldigung, scheint Stapelüberlauf Probleme mit der Aktualisierung meiner Dateien Nur aktualisiert den richtigen Controller-Code. Lassen Sie mich wissen, was Ihre Gedanken sind. –

+0

funktioniert es nicht, wie es ist? – oreoluwa

+0

Nein, das Formular verschwindet nicht, sobald die Übermittlung erfolgt und der Link, den ich ursprünglich versteckte nicht angezeigt.Der neue Inhalt wird nicht an die Mindmap angehängt div –

Verwandte Themen