0

我对 Rails 比较陌生,但是我在控制台中可以正常工作,但是对于我来说,通过网页保存记录并没有链接一对多链接。

模型是:

class Contact < ActiveRecord::Base
  has_many :needs_personals
end

class NeedsPersonal < ActiveRecord::Base
  belongs_to :contact
  accepts_nested_attributes_for :contact
end

我正在使用 simple_form 所以 _form.html.erb 看起来像这样:

<%= simple_form_for @needsPersonal do |f| %>
  <%= f.association :contact %>

  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>

我的 create 方法看起来很标准,看起来像这样:

def create
  @needsPersonal = NeedsPersonal.new(params[:needsPersonal])

  if @needsPersonal.save
    redirect_to @needsPersonal, notice: 'NeedsPersonal was successfully created.'
  else
    render action: "new"
  end
end

出于某种原因,尽管能够看到它正在发布,但此代码并未将 contact_id 分配给表。

有任何想法吗?

4

2 回答 2

2

看看从http://rails.nuvvo.com/lesson/5017-ruby-coding-convention中提取的命名约定。

类/模块

类名和模块名应该是名词;混合大小写,每个内部单词的首字母大写。

前任:

class Raster,  class Raster::ImageSprite

方法

方法应该是动词。所有带有下划线 ('_') 分隔的单词的小写 ASCII 字母

前任。

run(), run_fast(), obj.background_color()

变量

变量名应全部为小写 ASCII 字母,单词之间用下划线 ('_') 分隔

前任:

i = 1 some_char = SomeChar.new() table_width = 0.0

常数

常量应全部大写,单词之间用下划线 ('_') 分隔。((呵呵,有没有合理的背景来区分常量和同时是常量的类名?))

前任:

MIN_LENGTH = 1
DEFAULT_HOST = "foo.example.com"

省略

说到“连接池”作为变量,您应该决定按范围选择名称,如下所示……</p>

'conpool' 用于局部范围(例如局部变量) '@connection_pool' 用于类范围(例如实例变量)

于 2012-09-18T12:55:19.100 回答
0

好的,所以我解决了。不知道为什么我几个小时前没有注意到这个。参数应该是params[:needs_personal]而不是params[:needsPersonal]如上。

很想了解一下为什么是骆驼案,什么时候强调。

于 2012-09-18T12:46:24.600 回答