因此,当用户完成测验时,他/她会填写他/她的姓名和电子邮件。在提交时,我需要在用户数据库中创建用户,并将个人答案存储在相关的答案数据库中。很明显,对于contact_id字段,我需要为Contact输入id:name => PARAMS [:名字]。当我在语句末尾添加.id时,我得到“没有方法错误ID”。但是当我在视图中时,contact.id工作正常。我确信这是一个很大的问题,但我需要帮助。谢谢
def submit
t = Contact.new
t.name = params[:name]
t.email = params[:email]
t.save
params.each do |key, value|
x = Answer.new
x.month = 1
x.question = key.to_i
x.answer = value
x.contact_id = Contact.where(:name => params[:name])
x.save
end
redirect_to('/')
end
更新:我通过使用x.contact_id = Contact.last.id来完成工作
最后因为我们刚刚创建了一个新用户.2ms之前,所以很可能是我们想要的用户。这是一个不好的方法吗?
更新:我尝试使用新的失败代码。
def submit
t = Contact.new
t.name = params[:name]
t.email = params[:email]
t.save
params.each do |key, value|
# target groups using regular expressions
if (key.to_s[/[0-9]/])
s = Contact.where({:name => params[:name]})
x = Answer.new
x.month = 1
x.question = key.to_i
x.answer = value
x.contact_id = s.id
x.save
end
end
redirect_to('/')
端
UDATE:此控制器代码现在正在为我工作。
class MonthOneController < ApplicationController
def index
@contacts = Contact.all
end
def submit
t = Contact.new
t.name = params[:name]
t.email = params[:email]
params.each do |key, value|
# target groups using regular expressions
if (key.to_s[/[0-9]/])
t.answers.build(:month => 1, :question => key.to_i, :answer => value)
end
end
t.save
redirect_to('/')
end
end
我需要为每个问题和答案创建一行,并且有多个通过params []传入。他们也像这样“1”:“假”,“2”:“e”等。所以正则表达式只是给了我那些与人的电子邮件地址和名称。
这是我可怕的表单代码。我先做了这个,并且一直在学习。
<%= form_tag("/MonthOne", :method => "get") do %>
<p>
<%= label_tag(:q, "Question") %><br />
<%= radio_button_tag("1", :a) %>Customer Scenario Tool<br />
<%= radio_button_tag("1", :b) %>Videos<br />
<%= radio_button_tag("1", :c) %>Sales Preview<br />
<%= radio_button_tag("1", :d) %>Sales Rep Mailer<br />
<%= radio_button_tag("1", :e) %>Unsolicited Proposal<br />
</p>
<p>
<%= label_tag(:q, "question 1") %><br />
<%= radio_button_tag("2", :true) %>True<br />
<%= radio_button_tag("2", :false) %>True<br />
</p>
<p>
<%= label_tag(:q, "question 2:") %><br />
<%= radio_button_tag("3", :a) %>answer 1<br />
<%= radio_button_tag("3", :b) %>answer 2<br />
<%= radio_button_tag("3", :c) %>answer 3<br />
<%= radio_button_tag("3", :d) %>answer 4<br />
<%= radio_button_tag("3", :e) %>answer 5<br />
</p>
<p>
<%= label_tag(:q, "question 3") %><br />
<%= radio_button_tag("4", :a) %>1,500<br />
<%= radio_button_tag("4", :b) %>10,000<br />
<%= radio_button_tag("4", :c) %>15,000<br />
<%= radio_button_tag("4", :d) %>30,000<br />
</p>
<p>
<%= label_tag(:q, "question 4") %><br />
<%= radio_button_tag("5", :a) %>answer 1<br />
<%= radio_button_tag("5", :b) %>answer 2<br />
<%= radio_button_tag("5", :c) %>answer 3<br />
<%= radio_button_tag("5", :d) %>answer 4<br />
</p>
<p>
Name: <%= text_field_tag(:name) %><br />
Email: <%= text_field_tag(:email) %> <br />
</p>
<%= submit_tag("Submit") %>
<% end %>
我尝试使用Form for和accepts_nested_attributes更改此设置,但我无法传递错误。部分是因为控制器和视图是由我制作的,并且不遵循rails惯例。因此,当form_for构建表单时,它找不到contact_path等。
答案 0 :(得分:2)
我认为你正试图解决一个问题,即rails有一个相当不错的解决方案。 您的模型中的 accepts_nested_attributes_for 以及视图中的 fields_for 应该能够让这相当容易......实际上是蛋糕:-P
Ryan Bates og railscasts有几集涉及这个主题。
http://railscasts.com/episodes/196-nested-model-form-part-1
http://railscasts.com/episodes/197-nested-model-form-part-2
链接m_x也给你一些解释。
他的榜样甚至与我认为你要做的事情相当接近。