質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

2回答

18526閲覧

Railsでテーブルをクリックしたときに詳細画面をモーダルウィンドウで表示したい。

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

1グッド

2クリップ

投稿2014/11/06 08:58

テーブルをクリックしたときに詳細画面がモーダルウィンドウで表示されるように実装したいのですが、Railsでどのように実装すれば良いか分かりません。

簡単なblogアプリを以下のように作成しました。

lang

1rails new blog 2rails g scaffold Post title:string body:text 3rake db:migrate

blog/config/routes.rbに以下を追加

lang

1resources :posts 2root 'posts#index'

http://localhost:3000にアクセス
これで簡単なblogアプリが完成しました。

このブログのトップページ http://localhost:3000に表示されている「show」または「Edit」リンクを押すとモーダルウィンドウが表示され画面を遷移せずに編集出来るようにしたいのですが、どのように実装すれば良いでしょうか?
非同期通信をするためにajaxを使用すれば良いところまでは分かるのですが、このコードのどこに「:remote => true」と書けばよいのか分かりません。

初歩的な質問で申し訳ありませんがよろしくお願いいたします。

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

モーダルダイアログで Form を出して、submit する例 (動作画面とそのソース) が示されているページを紹介します。
http://jqueryui.com/dialog/#modal-form

おおざっぱにいうと、
非表示にしておいた div 中に form を書いておき、
必要に応じて jquery でその部分を ダイアグ表示する
というものです。

投稿2014/11/06 14:15

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2014/11/14 13:09

返信がおそくなって申し訳ございません。 やっと解決しました。 まず、edit,の部分は以下のサイトをほぼ真似て実装しました。 http://richonrails.com/articles/basic-ajax-in-ruby-on-rails そして問題だったのは一覧表をshowしたときにモーダルウィンドウで詳細画面を実装するという部分。教えていただいたurlよりモーダルウィンドウの作成方法の考え方を覚え、再度考え直してみました。 なかなかこの部分を実装しているサイトが見つからなかったため、無理矢理javascriptファイルを作成し、ajaxコードを書きました(これで合っているのか不明です...) showのajax化は以下の手順で行いました。 ①gemファイルにbootstrapを追加 blog/Gemfile gem 'bootstrap-sass', '~> 3.1.1' ②bundle install ③ルーティング設定 blog/app/config/routes.rbに以下を追加 match '/show', to: 'posts#show', via: 'get' ④blog/app/assets/javascripts/application.jsを編集 //= require jquery //= require jquery_ujs //= require bootstrap #追加 //= require turbolinks //= require_tree . ⑤blog/app/assets/stylesheetsに新規ファイル「costom.css.scss」を追加。 以下を追加する @import "bootstrap"; ⑥blog/app/views/posts/index.html.erbを以下のように編集 <h1>Listing posts</h1> <div class="container"> <table class="table table-condensed table-hover" > <thead> <tr> <th>Title</th> <th>Body</th> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <% @posts.each do |post| %> <tr id="<%= post.id %>" data-toggle="modal"> <td><%= post.title %></td> <td><%= post.body %></td> <td><%= link_to 'Edit', edit_post_path(post) %></td> <td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td> </tr> <% end %> </tbody> </table> <br> <%= link_to 'New Post', new_post_path %> <div id="myModal" class="modal fade"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true"> &times; </button> <h1>Posts</h1> </div> <div class="modal-body"> <div id="result_title"></div> <div id="result_body"></div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal"> 閉じる </button> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div> </div><!-- /container --> ⑦blog/app/assets/javascriptの下に新規ファイル「show.js」を作成。以下のように編集。 $(document).on('ready page:load', function() { $('table tr').click(function() { var $cur_td = $(this)[0]; $.ajax({ async: true , url : '../show/', type: "GET", data: {id : $cur_td.id}, dataType : 'json', success : function(data, dataType) { $(".modal-body").find("#result_title").html('<span>'+ data.title + '</span>'); $(".modal-body").find("#result_body").html('<span>'+ data.body + '</span>'); $('#myModal').modal('show'); } }); }); }); ⑧http://localhost:3000にアクセス  テーブルのカラムをクリックすると詳細(show)がモーダルウィンドウで開く事を確認。 これでなんとか解決しました。ありがとうございます。 ベストアンサーをどちらか迷いましたが、モーダルウィンドウのヒントになる情報をいただけましたので、今回katoyさんのアンサーをベストアンサーとさせていただきました。
guest

0

Bootstrapありなら、次のページが参考になるかもです。

参考: Rails 4 submit modal form via AJAX and render JS response as table row - Eric London's Blog

Bootstrapなしなら、次のページが参考になるかもです。

参考: 2009-04-06 - 篳篥日記

投稿2014/11/06 09:38

ryunix

総合スコア1656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2014/11/14 12:19

返信がおそくなって申し訳ございません。 新規作成の部分は教えていただいたサイトをほぼ真似て(モデルやコントロール名を変更する程度)作成してみたところできました。初心者のためレンダリングの部分に慣れていないためかコードを理解するのに苦しんでおりました。(レンダリングは慣れですね。。。) 問題は一覧からテーブルのカラムをクリックしたときに詳細画面(showの部分)のAjaxをどうやって作成するか悩んでおります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問