Ruby on Rails - Как обновить с помощью флажков - PullRequest
0 голосов
/ 10 февраля 2012

Название может быть слишком общим, но я надеюсь, что кто-то может мне помочь.

Сценарий следующий: - У меня есть модель Types, TypesActivity и Activity (и отношение много ко многим) -После создания типа (который состоит только из имени) я должен назначить действия этому типу, и для этого у меня есть в другом представлении (форме) 2 раздела: 1) С помощью select_tag типов (который показываетимя) 2) Список флажков, которые отображают все действия

Я показываю флажки, используя это в представлении формы

_form.html.erb

<% @activities.each do |a|%>
          <li><%= check_box_tag "act[]", a.id, false%> | <%= a.name%></li>
<%end%>

и в моем контроллере

def create
  params[:act].each do |a|
    TypeActivity.create({:type_id => params[:resource][:type_id], :activity_id=>a})
  end

  redirect_to "somewhere"
end

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

Это правильно?(или есть другой лучший способ?)

def update
   _v = TypeActivity.find(params[:id]).type_id
   params[:act] do |a|
      TypeActivity.update_attributes(:type_id=>_v,:activity_id=>a)
   end
end

Также, если я хочу отредактировать один TypeActivity (type_activities / edit / 3), я хотел бы показать флажки, которые уже были выбраны, и я сделал это

def edit
   @t = TypeActivity.find(params[:id]).type_id
   @activities = Activity.all
end

и на мой взгляд

_form.html.erb

<% @activities.each do |a|%>
  <li><%= check_box_tag "act[]", a.id, !TypeActivity.where(:type_id=>@t,:activity_id=>a.id).empty?%> | <%= a.name%></li>
<%end%>

Это хороший способ?

Спасибо всем заранеекоторые читают все это =)

JavierQQ

1 Ответ

0 голосов
/ 11 февраля 2012

Если таблица type_activity only содержит type_id и activity_id, то лучше вообще не создавать модель TypeActivty.

Считайте type_activity таблицей ссылок и настройте has_and_belongs_to_many сопоставление в моделях Type и Activity. Затем используйте TypesController для управления назначением операций типу.

Материалы для чтения

Руководство по рельсам по ассоциациям:
http://guides.rubyonrails.org/association_basics.html#the-has_and_belongs_to_many-association

Railscast # 17 - Флажки HABTM:
http://railscasts.com/episodes/17-habtm-checkboxes

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