Название может быть слишком общим, но я надеюсь, что кто-то может мне помочь.
Сценарий следующий: - У меня есть модель 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