Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 数据未保存在联接表中_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 4_Has And Belongs To Many - Fatal编程技术网

Ruby on rails 数据未保存在联接表中

Ruby on rails 数据未保存在联接表中,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,has-and-belongs-to-many,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,Has And Belongs To Many,我在一个网站上工作,一个用户可以有多个项目,多文件用户可以为一个项目做出贡献。 我有一个项目模型 class Project < ActiveRecord::Base #associations has_and_belongs_to_many :users end 和一个用户模型 class User < ActiveRecord::Base #associations has_and_belongs_to_many :projects end 我创建了一个名为-

我在一个网站上工作,一个用户可以有多个项目,多文件用户可以为一个项目做出贡献。 我有一个项目模型

class Project < ActiveRecord::Base
  #associations
  has_and_belongs_to_many :users
end
和一个用户模型

class User < ActiveRecord::Base
  #associations
  has_and_belongs_to_many :projects
end
我创建了一个名为-:projects\u users的联接表 当我在rails控制台上运行代码时,一切正常。 但是,当我尝试在控制器中执行保存操作时,数据没有保存在联接表中。 控制器的代码

请帮忙

class ProjectsController < ApplicationController

 def new
   @project = Project.new
 end

 def create
   @user = User.find(session[:user_id])
   @project = Project.new(project_params)   
     if @project.save
       @project.users << @user
       redirect_to @project
     else 
       flash[:error] = "Project has not been created due to some error"
       render 'new'
     end
 end

  private

  def project_params
    params.require(:project).permit(:name,:description)
  end
end
尝试使用嵌套\u属性\u

你的表格应该是这样的

<%= form_for(@question) do |f| %>
  <% if @question.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@question.errors.count, "error") %> prohibited this question from being saved:</h2>

      <ul>
      <% @question.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>

  <div class="field">
    <%= f.label :description %><br>
    <%= f.text_field :description %>
  </div>

  <%= f.fields_for :answer do |builder| %>
     <%= builder.label :content %>
     <%= builder.text_area :content %>
  <% end %>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
刚刚改变

@project.users << @user


它开始工作了。还不知道原因,但它工作了

试试@project=@user.projects.createproject_params或@project=@user.projects.newproject_params@Sontya抛出和未定义的方法项目错误。而append do you have session[:user_id],您将不会得到@user,这就是为什么它会说undefined methodprojects@Sontya-你能提出必要的修改建议吗?
<%= form_for(@question) do |f| %>
  <% if @question.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@question.errors.count, "error") %> prohibited this question from being saved:</h2>

      <ul>
      <% @question.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>

  <div class="field">
    <%= f.label :description %><br>
    <%= f.text_field :description %>
  </div>

  <%= f.fields_for :answer do |builder| %>
     <%= builder.label :content %>
     <%= builder.text_area :content %>
  <% end %>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
@project.users << @user
@user.projects << @project