Pages

2011年5月28日土曜日

[linux]sshで公開鍵ログイン[ssh]

クライアントで
$ ssh-keygen -t rsa
をして.ssh以下に出来るid_rsa.pubをサーバーに転送します。

サーバーでid_rsa.pubを.ssh以下にあるauthorized_keysに追加します。
.ssh$ id_rsa.pub >> authorized_keys

後はパーミッションを確認して終了です。

2011年5月24日火曜日

[Rails]accepts_nested_attributes_forでネストした別モデルのフォーム[Ruby]

railsを使っていて、親モデルのフォームの中で、子モデルのフォームも一緒に更新したいと思いました。はじめは親モデルのコントローラに処理を追加して…などやっていましたが、いろいろ調べた結果、どうやら便利なものがあるようでした。

 accepts_nested_attributes_forと言うものらしいです。

そこで、様々なサイトを参考にしながらいろいろ試したのにうまくいかない。
はて、どうしたものか。。。

途方にくれていたところ、下記のサイトを発見しました。

Rails accepts_nested_attributes_for and fields_for


# model

class Parent < ActiveRecord::Base
  has_one :child
  accepts_nested_attributes_for :child
end

class Child < ActiveRecord::Base
  belongs_to :parent
end


# controller

class ParentsController < ApplicationController
  #...
  def new
    @parent = Parent.new
    @parent.build_child # ここが大切だったようです。
  end

  def edit
    @parent = Parent.find(param[:id])
    @parent.build_child if @parent.child.nil?
  end
end


# view (in Haml, with formtastic, but you can do this with regular Rails helpers too)

- semantic_form_for @parent do |f|
  - f.inputs do
    = f.input :name
  - f.semantic_fields_for :child do |c|
    - c.inputs do
      = c.input :some_child_field

親モデルをnewするときに、子モデルのほうもbuildしないとだめみたいです。