ruby-on-rails - has_many :通过rails5中的关联问题
问题描述
user
has_manyproject
并且project
有很多user
.
project_user
表具有属性project_id
和user_id
。
为用户使用设计 gem。
每当用户创建新项目时,项目都会由用户创建。但用户看不到项目index.html.erb
。
这是我的代码:project.rb
has_many :project_users
has_many :users, through: :project_users
项目用户.rb
class ProjectUser < ApplicationRecord
belongs_to :user
belongs_to :project
end
用户.rb
has_many :project_users
has_many :projects, through: :project_users
项目控制器.rb
def index
@projects = current_user.projects.all.order("created_at DESC")
end
def create
@project = current_user.projects.build(project_params)
respond_to do |format|
if @project.save
format.html { redirect_to projects_url, notice: 'Project was successfully created.' }
format.json { render :show, status: :created, location: @project }
else
format.html { render :new }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
end
params.require(:project).permit(:project_name, :from_date, :to_date)
index.html.erb#project
<% @projects.each do |project| %>
<% end %>
form.html.erb(项目)
<%= form_with(model: project, :html => {:id => 'project-form-validation'}, local: true) do |form| %>
<div class="row select-date-wrapper">
<div class="field columns large-6">
<%= form.label :project_name,:class=>"required" %>
<%= form.text_field :project_name %>
</div>
<div class="field columns large-2">
<%= form.label :from_date,:class=>"required" %>
<%= form.text_field :from_date, class: 'datepicker', readonly: 'true' %>
</div>
<div class="field columns large-1"></div>
<div class="field columns large-2">
<%= form.label :to_date,:class=>"required" %>
<%= form.text_field :to_date, class: 'datepicker', readonly: 'true' %>
</div>
<div class="field columns large-1"></div>
</div>
<div class="row">
<div class="actions columns button-right">
<br>
<%= form.submit :class => "button primary" %>
</div>
</div>
<% end %>
解决方案
您需要将创建的项目附加到用户的项目中。我认为您可以执行以下操作:
if @project.save
current_user.project_users.create(project: @project)
# rest of the code
end
推荐阅读
- windows - 在 Windows 命令终端中调出命令
- ansible - psutil 无法在 python3 virtualenv 中安装 pip:致命错误:Python.h:没有这样的文件或目录
- c - 使用 popen 与 telnet 交谈不会失败,但不会像预期的那样运行
- spring-boot - BeanCreationException:创建名为“springSecurityFilterChain”的 bean 时出错
- apache-spark - 是否有任何可以调整的 spark 配置参数以减少驱动程序节点的内存消耗?
- mysql - 带有 SUM 的 LEFT JOIN 不返回正确的值
- javascript - 使用回调功能的 Python 过滤方法
- web-services - 使用Mule Web服务Consumer连接器时弹出这个错误是什么意思,"The SOAP request timed out"
- rust - 如何比较 Arc
反对T? - apache - Apache Web 服务器已停止