Ruby on rails Rails-通过引导模式编辑列表中的项

Ruby on rails Rails-通过引导模式编辑列表中的项,ruby-on-rails,twitter-bootstrap,Ruby On Rails,Twitter Bootstrap,我是Rails的新手。我尝试创建一个组列表(/groups),其中我希望在每一行中都有编辑和删除选项。编辑应通过模式实现,因为组只有一个属性-name。所以我不想打开/groups/number/edit 我的问题是:我不知道如何将所选组绑定到的表单。也许这确实不是个好办法。 显示模式,但名称字段为空。当我为@group使用debug时,也为空。我不知道为什么 这是我的代码(单组行): 我假设我上面的问题的答案是肯定的,因此,我将继续回答 第一件事:你不想为每个组重复不同的模态,你只希望所有组都

我是Rails的新手。我尝试创建一个组列表(
/groups
),其中我希望在每一行中都有编辑和删除选项。编辑应通过模式实现,因为组只有一个属性-
name
。所以我不想打开
/groups/number/edit

我的问题是:我不知道如何将所选组绑定到的
表单。也许这确实不是个好办法。
显示模式,但名称字段为空。当我为
@group使用debug时,
也为空。我不知道为什么

这是我的代码(单组行):


我假设我上面的问题的答案是肯定的,因此,我将继续回答

第一件事:你不想为每个组重复不同的模态,你只希望所有组都使用一个模态

第二件事:您想将
group.id
发送到控制器中的编辑方法,以便它将该组返回到您的模式中,这一想法非常正确

然而,问题在于你是如何试图实现这一点的

<%= link_to edit_group_path(group.id), "data-toggle" => "modal", "data-target" => "#myModal", :class => "edit-option btn" do %>
2.告诉控制器操作(在本例中为
edit
操作)响应
js

def edit
  @group = current_user.groups.find_by(id: params[:id])
  format.js
end
  • 准备一个
    edit.js.erb
    文件来处理响应(它将与其他视图文件位于同一目录中)

  • 从响应内部用
    @group
    填充表单

  • 将填充的表单置于模式中
  • 使用Javascript显示模式

    $('.modal-title').html("Edit Group")
    $('.modal-body').html("<%= escape_javascript( render partial: 'form', locals: {group: @group} ) %>")
    
    $('#myModal').modal()
    
    $('.modal title').html(“编辑组”)
    $('.modal body').html(“”)
    $('#myModal').modal()
    

  • 就这么简单和直接。希望这能帮上大忙。

    似乎还没有找到具有给定id的组。尝试使用
    Group.find(params[:id])
    -在这种情况下它会抛出异常。我不知道它是如何工作的,但params[:id]与方法GET相关,是吗?因此,它应该通过/groups/id/edit查找id。但是在这种情况下没有/groups/id/edit,因为我想在我的索引站点上有编辑选项(在模式中)。
    GET/groups/:id/edit
    重定向到组控制器传递参数[:id]的操作编辑。此操作用于编辑已存在的组。在您的情况下,具有给定id的组根本不存在,或者不属于当前用户,这就是@group为nil.Hmm的原因。。。我相信我知道你想要达到什么目标。但有一个问题:上面的代码是否在
    @groups中重复。每个代码是否循环?否。此代码是部分组,通过列表呈现(.我想Rails从中知道单击了哪个编辑按钮。感谢您的参与,我正在尝试对其进行编程,但我想我并不完全理解这种方法。在步骤3中我应该正确地做什么?您所说的“用@group填充表单”是什么意思?我以前从未见过.js.erb文件。我对javascript了解不多。你能再解释一下吗?很好,几乎完成了。format.js对我不起作用。我不得不使用respond_to do | format | respond|u to do | format |//format.js end。但我仍然有一个小问题。在这些更改之后,form for似乎没有看到必须使用补丁方法,要更新。您知道我可以用它做什么吗?(错误:没有路径匹配[PATCH]“/groups”)。我有资源:routes中的groups.rbi是现在获取组的表单模式吗?显示的错误是什么?询问缺少的id还是什么?
    
    <%= link_to edit_group_path(group.id), remote: true %>
    
    def edit
      @group = current_user.groups.find_by(id: params[:id])
      format.js
    end
    
    $('.modal-title').html("Edit Group")
    $('.modal-body').html("<%= escape_javascript( render partial: 'form', locals: {group: @group} ) %>")
    
    $('#myModal').modal()