Rails-表单问题 [英] Rails - Form problems

查看:68
本文介绍了Rails-表单问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的应用中,我有3种这样的模型:

In my app I have 3 models like that:

class Person
has_many :groups
has_many :group_memberships, :foreign_key => "member_id"
end

class Group_Membership
 belongs_to :member, :class_name => 'Person'
 belongs_to :group
end

class Group
belongs_to :person
has_many :group_memberships
has_many :members, :class_name => "Person", :through => "group_memberships", :foreign_key => "member_id"

我需要的是在group#show页面上创建一个按钮,该按钮可以使Person询问group_membership.根据上一个问题的建议,我在Group_Membership控制器上设置了def create_membership:

What I need is to create a button in the group#show page, that allows the Person to ask for the group_membership. By suggestion from a previous question I made a def create_membership on my Group_Membership controller:

def create_membership
  @group = Group.find params[:id]
  if @group.group_memberships.create( :member_id => params[:member_id])
     redirect_to @group
  else
     render :action => 'show'
  end
end

因此,我进入了组#show视图上的表单,并按照以下步骤操作:

So I moved on to my form, on the group#show view, and I did as follow:

<%= form_for :group_membership, @group_membership, :url => { :action => "create_membership" } do |f| %>
<%= submit_tag "Create" %>
<% end %>

但是每次我单击按钮时,它会将我重定向到表单以创建一个新的组,而不是Group_Membership.有什么提示吗? 预先感谢.

But everytime I click on the button, it redirects me to the form to create a new Group, not Group_Membership. Any hints? Thanks in advance.

######## EDIT #########

好吧,我有点将代码更改为如下代码:

Well, I kinda changed my code to something like this:

def create
@person = Person.find(current_person)
@group = Group.find(params[:group_id])
params[:group_membership] = {:member_id => @person.id, :group_id => @group.id}
@group_membership = Group_Membership.create(params[:group_membership])
if @group_membership.save
redirect_to @person
else
redirect_to @person
end
end

我的表单现在是这样的:

And my form is right now like that:

<% form_for(:group_membership, :url => group_memberships_path(:member_id => current_person, :group_id => @group.id)) do |f| %> <%= submit_tag "Join!" %>

<% form_for(:group_membership, :url => group_memberships_path(:member_id => current_person, :group_id => @group.id)) do |f| %> <%= submit_tag "Join!" %>

现在我可以实际创建一个group_membership模型,但是两个ID都在数据库列member_idgroup_id中添加为空白.

Now I'm able to actually create a group_membership model, but both id's are added blank in database column member_id and group_id.

如果将行@group_membership = Group_Membership.create(params[:group_membership])更改为@group_membership = Group.Group_Membership.create(params[:group_membership]),则可以保存组ID.如果更改为Person.,同样如此.

If I change the line @group_membership = Group_Membership.create(params[:group_membership]) to @group_membership = Group.Group_Membership.create(params[:group_membership]), I'm able to get group id saved. Same goes if I change to Person..

推荐答案

只是要清理一下

def create
  @group_membership = Group_Membership.create(:group => Group.find(params[:group_id]), :member => Person.find(current_person))
  if @group_membership.save
    redirect_to @person
  else
    redirect_to @person
  end
end

此代码应可在rails 3中使用我不确定较早的版本

this code should work in rails 3 I'm not sure about earlier versions

这篇关于Rails-表单问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆