2016-07-13 7 views
0

Ich verwende Kokon für verschachtelte Formulare. Wenn ich also ein Experiment hinzufüge, kann ich Variationen über das gleiche Formular hinzufügen. Ich habe gem 'best_in_place', '~> 3.1 installiert, um die Bearbeitung zu erleichtern, und ich habe ein Problem nach dem Update. Über den Best_in_place-Helfer kann ich auf eine Beschreibung klicken und sie ändern. Die Datenbank wird aktualisiert und die Änderung wird für einen Moment angezeigt. Anschließend wird sie nicht mehr angezeigt und kehrt zu dem zurück, was sie vor meiner Änderung war. Wenn ich die Seite aktualisiere, sind meine Änderungen sichtbar. Daher müssen Sie die Seite aktualisieren, um die Änderungen anzuzeigen. konnte ich nicht richtig an die Arbeit best_in_place und nach dem Lesen auf, beendete ich außerhalb meiner verschachtelten Routen eine Route ragte, um esbest_in_place - Seite aktualisieren, um Änderungen anzuzeigen

routes.rb

resources :advertisers do 
     resources :experiments do 
      resources :variations 
     end 
    end 
    resources :variations, only: [:update, :show] 

I best_in_place verwenden, um Arbeit in meinem Experimente Datei show.html.erb denken

<% @experiment.variations.each do |variation| %> 
         <h3><i class="fa fa-square"></i> <%= variation.name %></h3> 
          <p class="data-row"> 
           <span class="data-name">URL</span>        
           <span class="data-value"><%= variation.url %></span> 
          </p> 
          <p class="data-row"> 
           <span class="data-name">Description</span>        
           <div><%= best_in_place variation, :description, :as => :textarea %></div> 
          </p> 
    <% end %> 

ich das Problem in meiner Variationen Update-Aktion ist. Hier ist meine Variationen Controller

class VariationsController < ApplicationController 
    before_action :find_variation 

def update 
    @variation.update(variation_params) 
end 

private 

    def variation_params 
     params.require(:variation).permit(:description, :name, :url) 
    end 

    def find_variation 
     @variation = Variation.find(params[:id]) 
    end 


end 

Jede Hilfe wäre sehr geschätzt!

Antwort

0

Nicht wirklich sicher, wie ich es behoben habe, aber es funktioniert. Hier ist was ich getan habe.

änderte ich meine Update-Aktion zu

respond_to :html, :json 


def update 

    @variation = Variation.find(params[:id]) 
    @variation.update_attributes(variation_params) 
    respond_with(@variations) 
end 

Alle Arbeiten.

UPDATE: best_in_place verwendet json darunter, aber der Controller reagierte nicht richtig auf json. Also, durch Hinzufügen von respond_to und respond_with funktioniert es richtig.