Actualizare : acum current_user si current_company sunt serializate si accesibile in aplicatia ember

Demonstrati o aplicatie ember.js + rails + concepeti care utilizeaza o abordare hibrida: Rails + Devise pentru autentificarea utilizatorului, o actiune de vizualizare rails pentru atribuirea variabilelor de sesiune si o aplicatie ember cu scop care are acces la metodele de rails serializate.

De asemenea, arata:

  • Persistenta unei bratari are o multime de relatii cu Rails
  • Sortarea si filtrarea in parintele unui brat are_multi
  • Afisarea metodelor rails current_user si current_company in cadrul aplicatiei de ember cu scop

Acestea sunt blocuri simple, cu posibilitati puternice. Aceasta este o implementare rapida, cu un design zero, dar in curand voi fi actualizat in acest exemplu sau deschiderea unuia dintre proiectele mele actuale ember + rails pentru a arata exemple mai complexe si mai bogate de cat de puternica a devenit aceasta combinatie.

Pentru a rula aceasta demonstratie:

  1. clonati sau descarcati

  2. instalarea cd / app si a pachetului

  3. rake db: migreaza

  4. grebla db: samanta

  5. sine s

  6. fa-o mai buna, PR bun venit! : P

Piese de cod interesante:

  1. In vizualizarea Companii Rails, in compania specifica link_pentru a face clic, treceti variabila companiei la o actiune a controlerului rails care este transmisa mai departe catre o metoda de ajutor pentru a seta o variabila de sesiune pentru curent_company.

    <% @ companies.each do | company | %> <% = link_to ‘Tabloul de bord al companiei’, set_current_company_company_path (: id => company)%> <% end%>

    clasa CompaniesController <ApplicationController

    def set_current_company session [: company_id] = params [: id] redirect_to assets_path end … end

    clasa ApplicationController <ActionController :: Base … helper_method: current_company

    def company_current @company_current || = Company.find_by_id! (session [: company_id]) end … end

    App :: Application.routes.draw do

    resurse: companiile membre obtin: set_current_company end end …

Metoda set_current_company va seta variabila current_company la nivel de sesiune si va redirectiona utilizatorul catre vizualizarea feroviarelor assets / index.html.erb care contine aplicatia dvs. de membru.

  1. Acum trebuie sa va extindeti datele api ale sinelor pentru Postari (si comentarii, Companii_membri) pentru compania_curenta pe care doriti sa o utilizati in modelele dvs. api / ember json, asa:

    clasa PostsController <ApplicationController

    def index @posts = Post.where (company_id: current_company.id) render json: @posts end

    def create @post = Post.

    laura marano nude masajes eroticos camara oculta
    pajas entre colegas descargar videos porno gratis
    porno online follando con abuelas
    orgias con abuelas porno senegal
    porno traducido español sexo casero españa
    enanas porno vecina mirona
    comiendo coño ver sexo gratis
    follada a traicion videos porno online
    corriendose dentro porno gay castellano
    follame xxx se folla a
    porno gay castellano voyeur playa
    pornoamater mamadas en la playa
    se folla a su madre porno espaniol
    porno gratis abuelos hermanos españoles follando
    pepe porno viejas tetonas
    videos heroticos supertetas
    gays haciendo el amor cornudos consentidos
    porno torrent porno violada
    sexo con viejas pornografia gratis
    porno transexual en español violada xxx

    new (params [: post] .merge: company_id => current_company.id)

    respond_to do | format | if @ post.save render json: @post, status:: created, location: @post else render json: @ post.errors, status:: unprocessable_entity end end

    Sfarsit

  2. Apoi serializati datele prin AMS catre aplicatia ember intr-un mod normal:

    clasa PostSerializer <ActiveModel :: Serializer atribute: id,: title,: body,: company_id,: user_id has_many: end end

  3. Apoi, treceti la modelul de arde.

    App.Post = DS.Model.extend ({title: DS.attr (‘sir’), corp: DS.attr (‘sir’), comentarii: DS.hasMany (‘App.Comment’)});

  4. Controlerele, vizualizarile si sabloanele Ember ar trebui sa se comporte conform asteptarilor. Consultati [aplicatia demo] pentru a vedea implementari super de baza.

Pentru a obtine acces la current_user si current_company, utilizati serializarea activ_model_serializers meta date si apoi solutia temporara a acestui tip pentru a va cartifica serializatorul, astfel incat sa prinda metadatele si sa le seteze la o variabila globala in aplicatia dvs. ember. Este posibil sa nu fie cele mai bune practici, dar deocamdata se face treaba.

  1. Mai intai, setati store.js sa preluati metadatele de la json si sa le setati la o variabila globala in serializator:

    App.CustomRESTSerializer = DS.RESTSerializer.extend ({extractMeta: functie (incarcator, tip, json) {var meta; meta = json [this.configOption (type, ‘meta’)]; if (! Meta) {return;} Ember.set (‘App.metaData’, meta); this._super (loader, type, json);}});

    App.Store = DS.Store.extend ({revizuire: 11, adaptor: DS.RESTAdapter.create ({bulkCommit: false, serializator: App.CustomRESTSerializer}),});

    App.ready = function () {App.CompanyMembership.find (); }

  2. In al doilea rand, in rails company_memberships_controller.rb redati meta date:

    render json: @company_memberships,: meta => {: current_user => current_user,: current_company => current_company}

  3. In cele din urma, apelati orice atribut current_user sau current_company direct din sabloanele dvs.:

    Conectat cu: {{App.metaData.current_user.email}}

    Compania actuala: {{App.metaData.current_company.name}}