form_withについて。

orm_withは、インスタンスの中身によって、アクションを自動的に判断する。

インスタンスがからなら、crate。

インスタンスに中身が入っているなら、update。のようにだ。

 

なので、基本的にurlを指定する必要はないのだが、urlを指定することで、行うアクションを限定することができるので、エラーが起こる確率を減らすことができる。

 

しかも、urlを指定していれば、newアクションにインスタンスを生成しなくても、入力した値が自動的にcreateアクションへと送られるので、createアクションでインスタンスを生成することで、値を保存できるようになり、入力した値はインスタンスに入っておらず、二重ハッシュ構造ではないので、requireでモデルを指定しなくても良くなる。

 

しかし、newアクションにインスタンスを設定しないまま、urlを指定していると、インスタンスは「飾り」だと認識されるので、エラーメッセージを表示することができなくなる。なので、一番硬い手としては、newアクションでインスタンスを生成し、さらにform_withurlも指定するということ。