编辑/更新rails has_many和belongs_to

时间:2018-03-26 16:41:50

标签: ruby-on-rails

我在Stackoverflow中的第一个问题。 我已经学习Rails一周了。我有一个具有这种结构的项目:

class Community < ApplicationRecord
  has_many :community_neighbors
  has_many :community_coordinators 
  has_one :work_table 
end

此视图(仅适用于新视图):

<%= form_with(model: [ @community, @community.community_neighbors.build ]) do |f| %>
  <p>
   <%= f.label :Nombre %><br>
   <%= f.text_field :name%>
  </p>
  <p>
   <%= f.label :Apellido %><br>
   <%= f.text_field :surname %>
  </p>
  <p>
   <%= f.label :Teléfono %><br>
   <%= f.text_field :phone %>
  </p>
  <p>
   <%= f.label :"E-mail" %><br>
   <%= f.text_field :mail %>
  </p>
  <p>
   <%= f.submit %>
  </p>
<% end %>

和这个控制器

class CommunityNeighborsController < ApplicationController
  def new
    @community = Community.find(params[:community_id])
  end

  def edit
    @community = Community.find(params[:community_id])
    @community_neighbor = @community.community_neighbors.find(params[:id])
  end

  def create
    @community = Community.find(params[:community_id])
    @community_neighbors = @community.community_neighbors.create(community_neighbors_params)
    redirect_to community_path(@community)
  end

  def update
    @community = Community.find(params[:community_id])
    @community_neighbor = @community.community_neighbors.find(params[:id])
    @community_neighbor.update_attributes(community_neighbor_params)
  end


  private
    def community_neighbors_params
  params.require(:community_neighbor).permit(:name, :surname, :phone, :mail, :status)
    end
  end 

我有一个社区父亲课程的编辑表格,与编辑表单中的自动填充功能完美配合。

问题:当我编辑子类community_neighbor时,自动填充功能无效。

不知道我是否需要发布其他内容

我真的很感谢你的帮助!

编辑:这就像First Raill app,但我需要为评论&#39;制作编辑视图/控制器。

1 个答案:

答案 0 :(得分:0)

代码中的一些问题:

  • 您没有在update方法中更新任何内容。您应该使用update_attributes

  • 您正在使用ID而不是community_id搜索社区。

  • 您正在使用@community.Community_neighbors(上限)。

修正更新方法:

def update
  @community = Community.find(params[:community_id])
  @community_neighbor = @community.community_neighbors.find(params[:id])
  @community_neighbor.update_attributes(community_neighbor_params)
end

编辑:更多问题

我发现了另一个问题。在编辑中,您正在寻找特定的社区邻居。但是在视图中你没有显示这个邻居,而是一个新的(空的)。你应该这样改变它:

def new
  @community = Community.find(params[:community_id])
  @community_neighbor = @community.new
end

def edit
  @community = Community.find(params[:community_id])
  @community_neighbor = @community.community_neighbors.find(params[:id])
end

在视图中:

<%= form_with(model: [ @community, @community_neighbor ]) do |f| %>
 ....
<%= end %>