Rails best_in_place gem с вложенным ресурсом - PullRequest
15 голосов
/ 08 января 2012

Кто-нибудь знает, возможно ли (и если да, каков синтаксис) для использования вложенного ресурса с гемом best_in_place?

Мой route.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 %>

дает мне неопределенную ошибку метода еще и потому, что нет goal_path

Я могу заставить гем работать на поле @user (не вложенный ресурс) без проблем.

Я использую Rails 3.1.1, Ruby 1.9.2, best_in_place 1.0.4

Ответы [ 4 ]

20 голосов
/ 09 января 2012

Я понял это.

Мне нужно было установить опцию path в вызове, вот так

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

Теперь это работает как чемпион!

10 голосов
/ 19 февраля 2013

Добавить путь и объекты к пути:

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

Каким-то образом простое решение пути bknoles у меня не сработало.

4 голосов
/ 06 октября 2016

Теперь указанный выше метод устарел.

В соответствии с последней документацией используйте ": url" вместо ": path", как показано ниже в примере

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

Cheers!

1 голос
/ 19 апреля 2012

Спасибо, @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
    @gadget=@widget.gadgets.find(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

Лучшее, Остин

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...