这个问题是关于另一种方法的,我想问的是:
Passing IDs through a new Form
我有一个group#view page,它是由Person访问的。在这个页面中,Person可以通过我开发的方法看到这个组的成员。问题是,我需要使用来自group的Id、来自访问页面的person的id以及来自该group的member的id创建模型group。
作为我的主计长,我有:
def create
@person = Person.find(current_person)
@asked_groupmembership = @person.owned_group_memberships.find_all_by_status(true,:include => [:group, :member])
@asked_groupmembership.each do |agm|
@honor = Honor.create(:group => Group.find(params[:group_id]),
:person => Person.find(current_person), :honored => Person.find(agm.member.id))
end
if @honor.save
...
end在我看来,为了创建一个新的荣誉,我有一个指向表单的person链接:
<% @asked_groupmembership.each do |agm| %>
<%= link_to "Create Honor", new_honor_path(:group_id => @group.id, :person => current_person.id,
:honored => agm.member.id) %> 但在我的表格里我不能拿到身份证之类的东西
<% form_for(:honor, :url => honors_path(:group_id, :person,
:honored)) do |f| %>我遇到的错误是,没有Id我就找不到Group。
有什么想法吗?谢谢。
##Edited2##
改变了我的crontroller
def new
#@person = Person.find(params[:person])
#@honored = Person.find(params[:honored])
#@group = Group.find(params[:group_id])
@honor = Honor.new
end
def create
@person = Person.find(current_person)
@honor = Honor.create(:group => Group.find(params[:group_id]),
:person => Person.find(params[:person]),
:honored => Person.find(params[:honored]))
if @honor.save
...
end发布于 2011-05-24 15:32:42
首先,您似乎缺少了一个控制器方法。与创建新对象的每个窗体一起,通常有两个控制器方法。
新的
创建
。
在我看来,你好像错过了新的方法。在新方法中,您将收集表单所需的所有隐藏数据(例如,用户不会直接输入的信息,如@person信息)。然后,我将使用隐藏的表单参数(而不是试图将其放在表单URL中)将此信息放入表单中。
发布于 2011-05-24 15:56:33
目标:从group#view循环开始,为组中的每个成员创建和添加荣誉链接,同时跟踪特定成员被授予的荣誉、所述成员被授予荣誉的组以及被授予荣誉的人。
以下内容实现了这一目标。
路线:
match "honors/:group/:person/:honored" => "honors#create", :as=>"my_custom_new_honor"组视图:
<% @asked_groupmembership.each do |agm| %>
<%= link_to "Create Honor", my_custom_new_honor_path(:group=> @group.id, :person => current_person.id,:honored => agm.member.id) %> 荣誉控制器,创建方法
@honor = Honor.create(:group => Group.find(params[:group_id]),
:person => Person.find(params[:person]),
:honored => Person.find(params[:honored]))在这个场景中,您不需要honor#new方法,而是直接使用create方法。这假定所有关系都已正确建立。
https://stackoverflow.com/questions/6112340
复制相似问题