【发布时间】:2012-03-03 05:01:02
【问题描述】:
标题可能过于笼统,但希望有人能帮帮我。
场景如下: - 我有一个模型 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%>
这是个好方法吗?
提前感谢所有阅读所有内容的人=)
哈维尔QQ
【问题讨论】:
-
这似乎是 stackoverflow.com/questions/2263333/… 的副本。请去看看。
标签: ruby-on-rails ruby ruby-on-rails-3