Ответ 1
Я понял это.
Мне нужно было установить параметр path
в вызове так:
<%= best_in_place @goal, :description, :path => user_goal_path %>
Теперь он работает как чемпион!
Кто-нибудь знает, возможно ли (и если да, что такое синтаксис) для использования вложенного ресурса с драгоценным камнем best_in_place?
Мои маршруты .rb выглядят примерно так.
resources :users do
resources :goals
end
Я хотел бы отредактировать поле :description
цели, но код в моем представлении для
<%= best_in_place [@user, @goal], :description %>
дает сообщение NoMethodError
undefined method `description' for #<Array:0x20e0d28>
Использование
<%= best_in_place @goal, :description %>
дайте мне ошибку метода undefined также потому, что нет goal_path
Я могу заставить gem работать для поля @user (не вложенного ресурса) без проблем.
Я запускаю Rails 3.1.1, Ruby 1.9.2, best_in_place 1.0.4
Я понял это.
Мне нужно было установить параметр path
в вызове так:
<%= best_in_place @goal, :description, :path => user_goal_path %>
Теперь он работает как чемпион!
Добавить путь и объекты в путь:
<%= best_in_place @goal, :description, :path => user_goal_path(@user,@goal) %>
Каким-то образом простое решение путей для bknoles не работает для меня.
Теперь метод выше устарел.
В соответствии с последней документацией используйте ": url" вместо ": path", как показано ниже в примере
<%= best_in_place @goal, :description, :url => user_goal_path %>
Ура!
Спасибо, @bknoles. Ваш ответ определенно помог мне достичь аналогичного решения. Здесь моя реализация:
#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"
Вы можете проверить весь проект на github, если хотите увидеть больше кода.
https://github.com/hernamesbarbara/ajax-rails-full-crud
Бест, Остин