Rails 3 - Best_in_place редактирования - PullRequest
7 голосов
/ 08 апреля 2011

Надеюсь, простой ответ; Я использую камень best_in_place , и он отлично работает. Я пытаюсь выяснить, как создать выпадающее меню, используя:

:type => :select, :collection => []

Что я хочу сделать, это передать список имен, которые были введены из моей пользовательской модели.

Есть мысли, как это сделать? Могу ли я смешать это с collection_select?

1 Ответ

8 голосов
/ 10 июня 2011

Параметр: collection принимает массив пар ключ / значение:

    [ [key, value], [key, value], [key, value], ... ]

Где ключ - это значение опции и значение - это текст опции .

Лучше всего генерировать этот массив в модели, соответствующей объекту, для которого вы хотите создать список опций, а не по вашему мнению.

Звучит так, как будто вы запустили и запустили best_in_place, так что вот простой пример страницы показа проекта, где вы хотите использовать best_in_place, чтобы изменить назначенного пользователя для конкретного проекта с полем выбора.

## CONTROLLER

# GET /projects/1
# GET /projects/1.xml
# GET /projects/1.json
def show
  @project = Project.find(params[:id])

  respond_to do |format|
    format.html
    format.xml  { render :xml => @project.to_xml }
    format.json { render :json => @project.as_json }
  end
end


## MODELS

class User
  has_many :projects

  def self.list_user_options 
    User.select("id, name").map {|x| [x.id, x.name] }
  end
end

class Project
  belongs_to :user
end


## VIEW (e.g. show.html.erb)
## excerpt

<p>
  <b>Assigned to:</b>
  <%= best_in_place @project, :user_id, :type => :select, :collection => User::list_user_options %>
</p>

# note :user_id and not :user

Обратите внимание, что из памяти основная версия best_in_place отправляет запрос ajax для поля выбора, независимо от того, изменилось значение или нет.

Также кое-что следует иметь в виду;best_in_place предназначен для редактирования существующих записей «на месте», а не для создания новых (для этого используйте collection_select в своей части _form для новой страницы).

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