ruby-on-rails - 无法在 Rails 5 应用程序中添加行以加入表
问题描述
我有三个表 - result、feedback_qs 和 feedback_qs_results(连接表)。给定现有结果和 feedback_qs,我想用 result_id、feedback_q_id 和后续答案 (text_area) 填充连接表。
我相信关系是正确的......
# result.rb
has_many :feedback_q_results
has_many :feedback_qs, :through => :feedback_q_results
# feedback_q.rb
has_many :feedback_q_results
has_many :results, :through => :feedback_q_results
# feedback_q_result.rb
belongs_to :result
belongs_to :feedback_q
我可以通过下面的 config/routes.rb 访问 result_id(result/result.id/feedback)...
resources :results do
member do
get 'feedback'
post 'feedback_create'
end
end
这个表单填充连接表会是什么样子?类似的东西(我意识到这是不正确的)......?如何通过 post_controller 获取数据以填充连接表?还是应该通过另一个控制器?
<%= form_for :result, url: feedback_create_result_path(result), method: :post do |form| %>
<% for q in FeedbackQ.all %>
<div class="col field">
<p>
<%= form.label q.question_text %>
</p>
<%= text_area_tag id: q.id %>
</div>
<% end %>
<div class="actions">
<%= form.submit "Submit", class: "btn btn-primary" %>
</div>
<% end %>
我的 feedback_create 方法会是什么样子?虽然我已经看到几个关于 Rails 的多对多关系和填充连接表的问题,但这些用例似乎都不适合我的需要。提前致谢。
更新 - 我的用例是这样的:用户参加考试(称为结果),然后他们通过回答反馈问题来审查监考人员。我想在连接表中记录反馈
解决方案
如果您的 has_many 关联工作正常,那么在 rails 控制台中您应该能够执行以下操作:
> result.feedback_qs
=> []
和
> feedback_q.results
=> []
Whereresult
和feedback_q
are 分别是Result
和FeedbackQ
对象。
要将 feedback_q 与结果相关联,只需:
> result.feedback_qs << feedback_q
feedback_q_result
这应该在表中创建一条记录。现在,当你这样做时
> result.feedback_qs
它应该返回feedback_q
您刚刚添加的记录。
推荐阅读
- vue.js - 请求失败,状态码 403 axios vue
- java - 在休眠搜索弹性搜索中实现“随机”排序
- django - 如何避免在 Django 中使用反向外键进行如此多的查询
- jquery - 如何使用 chrome 扩展从网站按类名获取文本?
- javascript - React Js - 关于以动态方式渲染 Lightbox 组件的问题
- php - 如何使用改造获取 (@GET) JSON 数组响应
- security - 无法从 nifi 连接到 ldap 服务器(无法找到到请求目标的有效证书路径)
- apache-flink - Job Manager 在运行大量作业时会成为 Flink 的瓶颈吗?
- ios - 无法获得领域来保存我的数据 IOS Swift
- python - 如何在kivy中使用“if,else if,else”条件