0

私はこれに約2週間立ち往生しています。これを行うには、適切な方法で助けが必要です。私は2つのモデルを持っています。モデル1はリードです。モデル2は紹介です。

リードbelongs_to紹介

紹介has_manyリード

リード入力画面には、選択できるリードの可能な紹介を表示するパーシャルがあります。パーシャルには、CSSフレームワークとしてTwitterブートストラップを使用してモーダルを表示する[紹介の追加]リンクがあります。それから、紹介コントローラーの新しいアクションをレンダリングしています。

これはすべてこの時点まで機能します。私がしたいのは、新しい紹介を入力して保存し、モーダルを閉じて、リード編集/新しいビューの一部にある紹介のリストを更新して、新しい紹介を反映することです。追加した。しかし、この時点で、form_forをネストしました。また、別のコントローラーで機能している紹介フォームもあります。

私はこれにどのように取り組むべきかわかりません。私はここ数週間、さまざまな方法を探して試しています。繰り返して、Leadsコントローラーとビューの下にある紹介ビューとコントローラーを完全に再構築しますか?そのような繰り返しのコードが私がレールに切り替えた理由であり、私がこれを正しく見ていないと感じる理由です。これを回避する簡単な方法が必要です。DraperやCellなどのGemsの使用を検討し、プレゼンターの使用について読みました。しかし、これらはすべてダッシュボードタイプのビューのソリューションであり、私が達成しようとしているものではないようです。

どんな助けや指示も大歓迎です。

ありがとうございました...

4

1 に答える 1

1

これは私がこの種の問題をプログラムする方法です。
それは私のために働きます、多分あなたはあなた自身の状況に適応することができます。

さて、あなたのcreate紹介コントローラーに対するアクションはjavascriptで応答する必要があります。

if @referral.save
    format.js

このようにしてcreate.js.erb、紹介のビューを保持するビューフォルダ内のファイルが作成されます。
あなたはこれcreate.js.erbに似たものを持っているかもしれません:

$('#modal_id').hide(); // Hide the modal or if you prefer, remove from DOM.
$('#referral_list_id').chidren().delete(); // Remove the list of referrals.
$('#referral_list_id').html(
  "<%= escape_javascript(render('referrals_list')) %>"
); // Render a partial with the new content from your controller.

あなたのモーダル内 formの新しいもののために、あなたもリモートでなければなりません:referral

<%= form_for @referral, :remote => true do %>

この方法を実装しているときにいくつかの落とし穴に遭遇するかもしれませんが、それはちょっと解決しやすいと思います。

于 2012-10-26T17:40:10.397 に答える