2016-08-16 4 views
1

は私が達成しようとしている何hereRailsのリモート作成するためのリンクモーダルおよび編集レコード

を見つけ、ユーザーがモーダルを使用して、インデックスページからレコードを編集できるようにすることです。私index.hamlビューで

私はこれを持っている:

_edit.hamlで
- @bars.each do |bar| 
    = link_to "Edit", edit_bar_path(bar), remote: true, class: "btn btn-default" 

#bar-modal.modal.fade 

edit.js.erb _form.hamlで

$("#bar-modal").html("<%= escape_javascript(render 'edit') %>") 
$("#bar-modal").modal("show") 

.modal-header 
    %h3= "Editing #{@bar.foo}" 
= render "form" 

= bootstrap_form_for @bar, remote: true do |f| 
    = f.text_field :foo 
    = f.button "Save" 

私のコントローラは標準のレール生成CRUDコントローラです。

何らかの理由で、リンクをクリックしてもモーダルが表示されません。私はそれを別のやり方で動かすことにしましたが、編集したものよりもむしろ「作成する」フォームを開いたのです。

私はブートストラップとハムルを使用しています。私は火かき棒に誤りがないことを確認しました。

私には何が欠けていますか?

+0

あなたは 'index.html.haml'を投稿できますか? –

+0

@ArunKumar質問の最初のコードセグメントは、現在私のフルインデックスファイルです。私は他のものをすべて削除して試してみました。 – Herm

+0

が解決策を追加しました。それがあなたの問題を解決するかどうか私に教えてください。 –

答えて

2

jsに応答するコントローラを変更しましたか?お使いのコントローラのアクションedit

def edit 
    #find the record 
    respond_to |format| 
    format.js # this will render edit.js.haml 
    # other formats 
    end 
end 

を追加し、あなたのedit.js.hamlにhamlerbを混合しています。コードの最初の行が実行され

$('#modal-container').html('#{ j(render 'edit') }'); 
$('#bar-modal').modal("show"); 

で、#bar-modalは私たちのドキュメントに存在することを交換してください。そして、modalメソッドを呼び出してモーダルを表示することができます。

jは、escape_javascriptの別名です。 (キーストロークが少ない)

modal-containerのIDを持つdivがあることを確認してください。あなたのモーダル(_edit.html.haml)のIDはbar-modalである必要があります。私たちは、ID bar-modalとモーダルを持っており、これはindex.html.hamlにする必要がありますプレースホルダのdiv #modal-containerにレンダリングされます

.modal.fade.in#bar-modal 
    .modal-dialog 
    .modal-content 
     .modal-header 
     %h3= "Editing #{@bar.foo}" 
     .modal-body 
     = render "form" 

注:

そして_form.html.hamlであなたのモーダルは、次のようになります。それはこのようなものでなければなりません。

%div{id: "modal-container"} 
    <!-- this is where the modal will go in --> 

- @bars.each do |bar| 
    = link_to "Edit", edit_bar_path(bar), remote: true, class: "btn btn-default" 

modal-containerをドキュメントの先頭に追加します。ブートストラップのドキュメントから、

モーダルマークアップの配置

常にモーダルの外観および/または機能に影響を与える他のコンポーネントを避けるために、あなたのドキュメントの最上位位置にモーダルのHTMLコードを配置してみてください。

+0

何かが起きているようです。私は、リンクをクリックすると火かき棒の500のエラーが表示されています。だから私があなたに一度解決されたことを伝えさせます。助けてくれてありがとう!!! – Herm

+0

私は500エラーを取り除きました。しかし、モーダルはまだ表示されていません。私は私のログで、私が期待したビューファイルをレンダリングしているのを見ることができますが、モーダルはブラウザに表示されません。 – Herm

+0

@Hermネットワークタブでは、応答本体に 'modal html'がありますか?あなたはギブスでプロジェクトを持っていますか?はいの場合は、URLを投稿してください。私は一見を持っています –

関連する問題