修正されたコードについては、以下のこの問題チェックを解決しました。この問題は、Jquery ダイアログを使用して単一ページの作成、更新、および削除機能を構築することにありました。完全な作業コードはここにあります。 https://github.com/frozzie/ModalCrud
私は単一ページのクラッドに取り組んでいます。
現在、表示ボタンをクリックして、別のページではなくダイアログの同じページにユーザー情報を表示しようとしています。
ダイアログを機能させることはできましたが、データを表示する際に問題が発生しました。ダイアログがポップアップしますが、情報がありません。
Railsのさまざまなファイル形式を参照することに慣れているとは言えませんが、どの変数名を参照すればよいかわかりません。
基本的に私の質問は、.html.erb の javascript に対して $('#<%= dom_id @user%>') に相当するものを取得することです
関連するコードは次のとおりです。
これは、ダイアログでレンダリングするパーシャルです。@user は何も参照していないようです。$('#<%= dom_id @user%>') を試しましたが、正しく使用する方法がよくわかりません。
<p>
<b>User name:</b>
<%= @user.user_name %>
</p>
<p>
<b>Email:</b>
<%= @user.email %>
</p>
<p>
<b>Password:</b>
<%= @user.password %>
</p>
<p>
<b>Account type:</b>
<%= @user.account_type %>
</p>
これは私のshow.js.erbです
$( "#show-form" ).dialog( "open" );
これは私のダイアログコードです:
$( "#show-form" ).dialog({
autoOpen: false,
height: 400,
width: 350,
modal: true,
closeOnEscape: true,
resizable:false,
buttons: {
Cancel: function() {
$( this ).dialog( "close" );
}
}
})
そして、これはショーをクリックするとダイアログとして表示される私のフォームです。
<div id="show-form" title="User Information"><%= render :partial => "userinfo"%></div>
これを変更してダイアログに情報を表示する方法についての助けをいただければ幸いです。
修正されたコード: パーシャルとしてレンダリングする代わりに、ダイアログ フォームを内部に含めました。ユーザーごとにダイアログをレンダリングするというアイデア。
<tr id = "<%= dom_id user%>">
<td><%= user.user_name %></td>
<td><%= user.email %></td>
<td><%= user.password %></td>
<td><%= user.account_type %></td>
<td><%= link_to 'Show', user, :remote=>true%></td>
<td><%= link_to 'Edit', edit_user_path(user), :remote => true %></td>
<td><%= link_to 'Destroy', user, :remote => true, method: :delete, data: { confirm: 'Are you sure?' } %>
</td>
<div id = "show-form">
<p>
<b>User name:</b>
<%= user.user_name %>
</p>
<p>
<b>Email:</b>
<%= user.email %>
</p>
<p>
<b>Password:</b>
<%= user.password %>
</p>
<p>
<b>Account type:</b>
<%= user.account_type %>
</p></div>
</tr>
これは、ダイアログの JavaScript です。
$( "#show-form" ).dialog({
autoOpen: false,
height: 400,
width: 350,
modal: true,
closeOnEscape: true,
resizable:false,
buttons: {
Cancel: function() {
//$("#new_user")[0].reset();
$( this ).dialog( "close" );
}
}
})
これはクリック時に発生します。
$("#show-form").dialog( "open" );