小编Jas*_*ten的帖子

如何获得Rails构建和fields_for只创建一个新记录而不包括现有记录?

我正在使用build,fields_foraccepts_nested_attributes_for在与新注册相同的表格上创建新的注册说明(有许多注册说明).大.

问题:在现有注册的编辑表单上,我想要创建另一个新注册注释,但我不希望看到每个现有注册注释的字段.

我有这个

class Registration < ActiveRecord::Base
  attr_accessible :foo, :bar, :registration_notes_attributes
  has_many :registration_notes
  accepts_nested_attributes_for :registration_notes
end
Run Code Online (Sandbox Code Playgroud)

还有这个

class RegistrationsController < ApplicationController
  def edit
    @registration = Registration.find(params[:id])
    @registration.registration_notes.build
  end
end
Run Code Online (Sandbox Code Playgroud)

在我看来我这样做:

<%= form_for @registration do |r| %>
  <%= r.text_field :foo %>
  <%= r.text_field :bar %>
  <%= r.fields_for :registration_notes do |n| %>
    <%= n.text_area :content %>
  <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

并且它创建一个新的注册说明(良好)空白文本区域每个现有注册注意对于注册(不,谢谢).

有没有办法只为该注册创建一个新注释并将现有注释单独留下?

ruby-on-rails

32
推荐指数
1
解决办法
2万
查看次数

为什么Git拒绝我的拉动只是因为我在我的本地分支上有一个提交?

服务器上有一个Git存储库,我的同事和我都推送和拉动.只要我们在提交前拉动它就可以正常工作.

但是,如果他已经推到了主分支,并且在同一时间我做了一个本地提交,当我试图拉动时,我得到了这个:

! [rejected]        master    -> master  (non-fast-forward)
Run Code Online (Sandbox Code Playgroud)

但我知道应该没有冲突.

我解决它的方法是拉入一个新的临时分支,然后将其合并到我的主人中,如下所示:

% git pull origin master:temp
From ssh://example.com/home/my/remote/repo
 * [new branch]      master    -> temp
Already up-to-date.
% git merge temp
Already up-to-date.
% git push origin master:master
Run Code Online (Sandbox Code Playgroud)

请注意,Git表现得像我没有做任何事情,但实际上我已经把它动摇了.

最近我意识到,而不是试图"说服"Git,我可以拉.我可以假装我还没有尚未提交git reset --soft HEAD^git stash,然后做拉,并承诺在此之上.

什么可能导致这种奇怪的挑剔行为?

我能够在我的本地机器上重现这个问题.这是我做的:

首先,我创建了第一个"本地"存储库并添加了一个文件.

% cd
% mkdir local-1
% cd local-1/
% mkdir website
% cd website/
% git init
Initialized empty Git repository in /Users/jason/local-1/website/.git/
% touch file
% git add .
% …
Run Code Online (Sandbox Code Playgroud)

git

14
推荐指数
1
解决办法
1万
查看次数

标签 统计

git ×1

ruby-on-rails ×1