2010-07-28 19 views
5

Sto provando a utilizzare jeditable con le mie app 3 rails. Vorrei modificare alcuni campi in linea. Attualmente funziona sul mio lato client ma i dati non sono aggiornati nella mia app.jeditable and rails 3

Potrebbe dare un'occhiata? Grazie in anticipo!

mio punto di vista:

<dt>Overview :</dt> 
<dd class="edit_textfield" id="<%= @project.id %>" name="overview"><%= @project.overview %></dd> 

mio controller:

def update 
    project = Project.find(params[:id]) 
    overview = params[:value] 
    project.save 
    render :text => params[:value] 
    end 

miei application.js:

$(".edit_textfield").each(function() {  
     $(this).editable('update', { 
      type : 'textarea', 
      cancel : 'Cancel', 
      submit : 'OK', 
      indicator : 'Saving...', 
      tooltip : 'Click to edit...', 
      rows  :  10, 
      method  :  "put", 
      submitdata : {id: $(this).attr('id'), name:$(this).attr('name') } 
     }); 
}); 

Grazie ad kschaper, funziona.

Ma quando uso jeditable per 2 campi nella mia pagina e li modifico, ne viene salvato uno solo. Rails ritengono che il secondo valore è 0

Penso che il problema venire dal mio regolatore:

def update 
    @project = Project.find(params[:id]) 
    @project.name = params[:name] 
    @project.overview = params[:overview] 
    @project.save 
    respond_to do |format| 
     format.js #{ render :text => params[:value] } 

    end 
    end 

Avete un indizio?

+1

Totalmente estraneo, ma jeditable è un nome fantastico;) – Nubsis

risposta

2

È panoramica un attributo di progetto? Quindi dovrebbe essere

@project.overview = params[:value] 
+0

Grazie funziona !!!! Era così semplice ...: oP – Fabien

0

I binari di studio non durano a lungo, ma penso che il prodotto abbia bisogno di '@'.

Ti piace questa:

def update 
    @project = Project.find(params[:id]) 
    overview = params[:value] 
    @project.save 
    render :text => params[:value] 
end 

Forse ...

+0

Grazie a Rainisic, ma è sempre lo stesso ;-) – Fabien

0

FYI - Gli attributi ID devono iniziare con una lettera. Quello che hai nella tua vista non passerà la convalida. Avrai bisogno di aggiungerlo con un po 'di testo nei tuoi modelli e poi rimuoverlo nel tuo application.js prima di inviarlo nei dati di invio.