2011-06-29 13 views
0

モデルXのインスタンスを作成してデータベースに保存するために必要な情報を送信するためのフォームを作成したいが、少し問題がある。テキストエリアのようなフォームフィールドを追加する方法と、createメソッドが呼び出されたときにそれらの値にアクセスできるようにする方法を知っていますが、フォームの一部ではない値をアクセス可能にしたい場合はどうしたらいいですか?たとえば、私のHTML文書の<div>にあるテキストにアクセスし、それをモデルXの作成メソッドに送信したい場合(つまり、コンテンツ変数などのように格納できる)どうすればよいでしょうか?それ、どうやったら出来るの?Railsフォーム - フォームの一部ではない変数へのアクセス

+0

あなたが追加するコードを表示することができますテキストボックスのコンテンツ属性へのテキスト? – natedavisolds

答えて

0

短い答えはできません - サーバーにデータを送信するには、フォームフィールドに入力する必要があります。

これ以上の方法があり、いくつかのオプションがあります。テキストエリアにテキストを置き、divのようにスタイルを設定するか、テンプレートが作成されたときに隠しフィールドに配置するか、javascriptを使用します隠しフィールドにコピーしてください...あなたが本当に何をしようとしているかによって異なります。おそらくあなたはいくつかの詳細を与えることができますか?あなたは何ができるかattr_accessor

を使用したいあなたのモデルでは

+0

ええ - 基本的に、ユーザーがテキストをハイライト表示すると、そのテキストをドキュメントからコピーして、ページのdivにダンプします(その部分が機能します)。次に、ユーザーがページの[作成]ボタンをクリックしたときに新しいExcerptモデルを作成したい場合、モデルに "content"属性をdivにダンプしたテキストに設定させます。 – Kvass

+0

なので、コンテンツをdivにコピーするときに、フォームの隠しフィールドにコンテンツをコピーしてから、フォームがサーバーに送信されたときにそのコンテンツを選択することもできますか? – chrispanda

+0

私はそれが可能だと思うが、私はそれを行う方法を知らない。 – Kvass

0

は、モデルで使用できる仮想属性を作成しますが、その後に廃棄される使用attr_accessorです。例えば

アプリ/ models.post.rb

class Post < ActiveRecord::Base 

    attr_accessor :some_variable 

    #now you can access 'some_variable' this variable in the model 
    #try Post.some_variable in the console 

end 

アプリ/ビュー/記事/ _form.html.erb

<div id="form"> 

     <div class="field"> 
     <%= f.label :some_variable %> 
     <%= f.text_field :some_variable %> 
     </div> 
     <div class="actions"> 
     <%= f.submit %> 
     </div> 
    <% end %> 
</div> 
+0

申し訳ありません - 詳細な応答は本当にありがとうございますが、私はそのすべてを追うことができませんでした。私の問題に特有です(私は前の答えに対するコメントで何をしようとしているのか、より詳細な記述を書いています) – Kvass

+0

Ok。それが意味をなさないかどうか私に教えてください。私はあなたがやろうとしていることをどうやって実践したかを模索しようとしていました。あなたはあなたがjavascriptを除いてdivから変数を得ることはできませんが、それはあなたがしなければならないことではありません。そして、あなたが本当にあなたがそれをする必要があると感じるなら、あなたはフォームの入力値ではなくdivの理由を説明する必要があります。 – s84

関連する問題