2012-01-08 18 views
15

¿Alguien sabe si es posible (y, de ser así, cuál es la sintaxis) utilizar un recurso anidado con la gema best_in_place?Rieles best_in_place gema con recurso anidado

Mi routes.rb ve algo como esto

resources :users do 
    resources :goals 
end 

quisiera editar el campo de la meta :description, pero el código en mi opinión para

<%= best_in_place [@user, @goal], :description %> 

da una NoMethodError diciendo

undefined method `description' for #<Array:0x20e0d28> 

Usando

<%= best_in_place @goal, :description %> 

me da un error método no definido también porque no hay goal_path

yo puede conseguir la gema trabajar para @user (el recurso no anidada) campo sin problemas.

estoy rieles 3.1.1, 1.9.2 Rubí correr, best_in_place 1.0.4

Respuesta

19

lo he descubierto.

que necesitaba para establecer la opción path en la llamada al igual que

<%= best_in_place @goal, :description, :path => user_goal_path %> 

Funciona como un campeón ahora!

+0

puede ayudar, tengo un problema similar: http://stackoverflow.com/questions/30090219/best-in-place-building-exotic-method-after-creation – Sauron

1

Gracias, @bknoles. Tu respuesta definitivamente me ayudó a llegar a una solución similar por mi cuenta. Aquí está mi aplicación:

#widget.rb 
class Widget < ActiveRecord::Base 
    validates_presence_of :name 
    has_many :gadgets 
    attr_accessible :name, :description 
end 

#gadget.rb 
class Gadget < ActiveRecord::Base 
    belongs_to :widget 
    attr_accessible :name, :widget_id, :id 
end 


#gadgets_controller.rb 
    def update 
    @[email protected](params[:id]) 
    if @gadget.update_attributes(params[:gadget]) 
     respond_to do |format| 
     format.html 
     format.json { respond_with_bip(@gadget) } 
     end 
    else 
    respond_to do |format| 
     format.html { render :action => "edit" } 
     format.json { respond_with_bip(@gadget) } 
    end 
    end 
    end 


#views/gadgets/_gadget.html.haml 
%tr{ :name => "gadget_", :id => gadget.id } 
    %td= gadget.created_at.localtime.strftime("%B %d, %l:%M%p") 
    %td.big=best_in_place gadget, :name, :path => [@widget, gadget] 
    %td.delete{:style => 'text-align:center;'} 
    =check_box_tag "gadget_ids[]", gadget.id, false, :class => "checkbox" 

Puedes retirar la totalidad del proyecto en GitHub si desea ver más del código.

https://github.com/hernamesbarbara/ajax-rails-full-crud

mejor, Austin

10

Añadir ruta y los objetos de la ruta:

<%= best_in_place @goal, :description, :path => user_goal_path(@user,@goal) %> 

De alguna manera la solución simple camino de bknoles no funcionó para mí.

+0

También trabajó maravillas. Gracias amigo. – Galaxy

4

Ahora el método anterior está en desuso.

Según el último uso de documentación "url" en lugar de ": ruta", como a continuación en el ejemplo

<%= best_in_place @goal, :description, :url => user_goal_path %> 

Salud!

Cuestiones relacionadas