select_tag несколько и частичные - PullRequest
0 голосов
/ 26 июля 2010

У меня проблема с некоторыми надоедливыми select_tags, я могу заставить их отображать данные на новом, но когда дело доходит до редактирования, они не отображаются, вот код, который у меня есть на данный момент.Я думаю, что мне нужно использовать include?, но я не знаю, где его поставить.

Это то, что у меня есть на данный момент для нового

<% @data = Code.find(:all, :conditions => "section = 'Location'") %>
<%= select_tag "candidate[code_ids][]", options_for_select(@data.map{|d| ["#{d.value}",d.id]}), :multiple => true %> 

И это дляthe edit

<% @data = Code.find(:all, :conditions => "section = 'Location'") %>
<%= select_tag "candidate[code_ids][]", options_for_select(@data.map{|d| ["#{d.value}",d.id]},@found), :multiple => true %>         

В моем контроллере у меня есть это, которое захватывает все коды, связанные с этим кандидатом.

@results = Candidate.all :joins => 
    "LEFT JOIN candidates_codes ON candidates.id = candidates_codes.candidate_id",
    :conditions => ["candidates.id = ?", params[:id]],
    :select => "candidates_codes.code_id"
#create an array of the candidates selected codes
@found = []
for c in @results
 @found.push(c.code_id.to_i)
end

Как я могу сделать так, чтобы у меня был только один выборвместо того, чтобы иметь один для нового и один для редактирования?

1 Ответ

0 голосов
/ 24 мая 2011

Спустя долгое время после того, как вы спросили ... Но так я смог сделать форму с выпадающим меню с множественным выбором и каждый раз корректно перезагружаться. По общему признанию, это использует параметры, а не данные ...

<%= type_list = EventConstants::EventType::to_array 
    select_tag(:event_types, options_for_select(type_list, params[:event_types]), 
               :multiple => true, :size => 5) %>

Поскольку я использую mongo_mapper, я могу просто связать запросы Plucky следующим образом:

qry_where = qry_where.where(:event_type.in => params[:event_types]) if params[:event_types] && !params[:event_types].include?("All")
...