Ruby on rails Rails-Id可以';在表格中找不到
有时间我陷入这个问题了。我正试图通过表单传递3个Id,以将数据保存到数据库中Ruby on rails Rails-Id可以';在表格中找不到,ruby-on-rails,ruby-on-rails-3,forms,Ruby On Rails,Ruby On Rails 3,Forms,有时间我陷入这个问题了。我正试图通过表单传递3个Id,以将数据保存到数据库中 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)
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.valid?
flash[:success] = "Honor created."
redirect_to (:back)
else
redirect_to (:back)
end
end
在我看来,我称之为new
方法:
<% @asked_groupmembership.each do |agm| %>
<%= link_to "Create Honor", new_honor_path(:group_id => @group.id, :person => current_person.id,
:honored => agm.member.id) %>
我怎样才能解决这个问题?
谢谢
###编辑##
class荣誉“person”,:foreign\u key=>“person\u id”
属于:荣誉,:类名=>'Person',:外键=>“荣誉id”
属于:组,:class\u name=>“组”,:foreign\u key=>“组\u id”
您需要使用以下内容更新创建方法:
def create
@person = Person.find(current_person)
@honor = Honor.create(:group_id => params[:honor][:group],
:person_id => params[:honor][:person],
:honored_id => params[:honor][:honored])
if @honor.save
...
end
因为在提交表单后,您在params[:honor]中获得了数据。您可以在问题中发布的代码中看到传递给控制器的哈希:
"honor"=>{"group"=>"39",
"person"=>"2",
"honored"=>"44",
为了使它更具可读性,让我们这样做 表格: 表单中的每个隐藏字段都将作为
params[:honor]
现在,看看控制器,有些东西看起来不太对劲。如果没有错误,create
方法将创建一个新实例并保存对象。调用create
,然后调用save
会起作用,但是您可以调用new
(而不是create
),然后调用save
,或者继续使用create
,然后使用valid?
。我个人认为new
thensave
过程更干净
例如:
def create
@person = Person.find(current_person)
@honor = Honor.new(
:group => Group.find(params[:honor][:group_id]),
:person => Person.find(params[:honor][:person_id]),
:honored => Person.find(params[:honor][:honored_id])
)
if @honor.save
...
end
end
改变了答案。。。请看一看。谢谢它起作用了,我的名字都错了,对不起!。但是我在表单中传递的东西都是空白的,知道吗?我的意思是,当我检查我的数据库时,我保存了ID并创建了
荣誉
,但是表单中的所有内容都是nil
。如果你在控制台中执行以下代码,你在db中得到了正确的记录?荣誉。创建(:组id=>3,:个人id=>2,:荣誉id=>1)是。我还添加了我的属性,保存的很好。
def create
@person = Person.find(current_person)
@honor = Honor.create(:group_id => params[:honor][:group],
:person_id => params[:honor][:person],
:honored_id => params[:honor][:honored])
if @honor.save
...
end
"honor"=>{"group"=>"39",
"person"=>"2",
"honored"=>"44",
<% form_for @honor do |f| %>
<%= f.hidden_field :group_id, :value => @group.id %>
<%= f.hidden_field :person_id, :value => current_person.id %>
<%= f.hidden_field :honored_id, :value => @honored.id %>
...
<% end %>
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[:honor][:group_id]),
:person => Person.find(params[:honor][:person_id]),
:honored => Person.find(params[:honor][:honored_id])
)
if @honor.save
...
end
end
def create
@person = Person.find(current_person)
@honor = Honor.new(
:group => Group.find(params[:honor][:group_id]),
:person => Person.find(params[:honor][:person_id]),
:honored => Person.find(params[:honor][:honored_id])
)
if @honor.save
...
end
end