因此,当用户完成测验时,他/她会填写他/她的姓名和电子邮件。在提交时,我需要在用户数据库中创建用户,并将个人答案存储在相关的应答数据库中。所以很显然,为contact_id字段,我需要输入联系人的ID where id:name => params [:name]。当我在声明的最后加上.id时,我得到“没有方法错误ID”。但是,当我在视图中时,contact.id可以正常工作。我相信这是一个小问题,但我需要帮助。由于在数据库中搜索他/她的姓名后获取用户的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
更新:我已经得到的东西通过,因为我们刚刚创建了一个新的用户.2ms前使用x.contact_id = Contact.last.id
最后的工作,所以它是最有可能的我们想要的用户。这是一个不好的方法吗?
更新:我尝试使用新的失败代码。
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”:“电子”等。所以正则表达式只是给了我与那些人的电子邮件地址和名称。
这是我可怕的表格代码。我首先做到了这一点,并且一直在学习。
<%= 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 %>
我试图改变这种使用窗体和accept_nested_attributes但我无法通过错误。部分原因是控制器和视图是由我制作的,并且不遵循rails惯例。所以当form_for构建表单时,找不到contact_path等。
使用'last'是坏的,因为如果你使用多线程或并发使用你的数据库,你不能确定插入的最后一个'Contact'是否是正确的。你的'Answer'模型'belongs_to:contact'?如果是这样,请按照[RoR关联指南](http://guides.rubyonrails.org/association_basics.html#has_many-association-reference)中的描述使用't.answers.build'。无论如何,只要问你是否需要更多细节 –
好,甜。我的答案模型确实属于联系人。去弄清楚如何实现这一点。 – Lsdafjklsd
圣牛!这是一些严重的魔法。它就像你说的那样工作,只是它在答案栏中插入'nil'。我必须考虑将正确的参数纳入其中。谢谢 – Lsdafjklsd