我试图从一个按钮的操作中在连接表内创建一条记录。为了解释,我会有一个事件模型,并且想要跟踪来自每个用户的选定事件。rails-在连接表中创建记录
我使用了HABTM关系,因为我真的不需要任何额外的字段。
User.rb => has_to_and_belongs_to_many:事件 Event.rb => has_to_and_belongs_to_many:用户 Events_Users迁移=> [USER_ID,事项标识,ID =>假]
所以,我怎么想我会做到这一点是。 ...
users_controller.rb =>
def add_event
@user = User.find(session[:user_id])
params[:user][:event_ids] ||= []
if @user.update_attributes(params[:user])
flash[:notice]='Added to My Events'
redirect_to :action => "index"
end
end
和btn_link貌似....
<% @events.each do |event| %>
<%= link_to image_tag("heart.gif"), :controller => 'user', :action => 'add_event' %>
<%=h event.name %>
<%=h event.description %>
<% end %>
但我不知道如何检查,看看它的工作......我将如何执行这些操作在控制台,所以我可以检查是否记录被添加?
u = User.find(1)
e = Event.find(1)
????? x = u.e.create ?????
这很好!如何在控制器中添加<<操作,但我可以在网页上执行操作? – ChrisWesAllen 2010-03-05 22:47:05
'<<'方法也可以在控制器中使用。 'u.event'返回一个数组。基本上你正在调用标准的数组操作。 Rails覆盖标准行为或'<<'(也称为'push')操作来更新'association'表。 – 2010-03-05 23:00:46