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

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

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

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

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ruby on Rails 4

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

Ajax

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

Q&A

解決済

1回答

6096閲覧

RailsでリロードしないとJavaScriptが動かない

riamk

総合スコア47

Ruby

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

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ruby on Rails 4

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

Ajax

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

0グッド

0クリップ

投稿2017/04/06 04:44

###前提・実現したいこと
rails 4 ローカル環境

マークダウンで書けるブログ機能を実装しました。
今回、そのブログにリアルタイムプレビュー機能を実装したいです。

https://github.com/katoy/qiita_markdown_example
上記のサイトを参考に一通り実装は完了しました。

###発生している問題・エラーメッセージ
ブログの記事を作成するページ(pages/new)に遷移して文字を入力してもプレビューに反映されません。

しかし、一度ページをリロードして文字を入力すれば正常にプレビューに反映されます。

turbolinksをlink_toで下記のように記述して切ると正常に動きます。

data: {"turbolinks" => false}

turbolinksを切れば正常に動くのですが、私はまだ初心者でturbolinksを切っていいものなのかどうか判断できません。

もっと他にこうした方がいいとか、このままでも大丈夫なのかアドバイス頂けると嬉しいです。

よろしくお願いします。

###該当のソースコード
参考サイトをとりあえずそのまま真似してみた感じになりますが、下記のように記述しています。

pages_controller.rb

# Pages Controller class PagesController < ApplicationController include ApplicationHelper before_action :set_page, only: [:show, :edit, :update, :destroy] # GET /pages # GET /pages.json def index @pages = Page.all end # GET /pages/1 # GET /pages/1.json def show end # GET /pages/new def new @page = Page.new end # GET /pages/1/edit def edit end # POST /pages # POST /pages.json def create @page = Page.new(page_params) respond_to do |format| if @page.save format.html { redirect_to @page, notice: 'Page was successfully created.' } format.json { render :show, status: :created, location: @page } else format.html { render :new } format.json { render json: @page.errors, status: :unprocessable_entity } end end end # PATCH/PUT /pages/1 # PATCH/PUT /pages/1.json def update respond_to do |format| if @page.update(page_params) format.html { redirect_to @page, notice: 'Page was successfully updated.' } format.json { render :show, status: :ok, location: @page } else format.html { render :edit } format.json { render json: @page.errors, status: :unprocessable_entity } end end end # DELETE /pages/1 # DELETE /pages/1.json def destroy @page.destroy respond_to do |format| format.html { redirect_to pages_url, notice: 'Page was successfully destroyed.' } format.json { head :no_content } end end def api_markdown markdown = qiita_markdown(params[:text]) p markdown render text: markdown end private # Use callbacks to share common setup or constraints between actions. def set_page @page = Page.find(params[:id]) end # Never trust parameters from the scary internet, only allow the white list through. def page_params params.require(:page).permit(:body) end end

pages.coffee

$ -> update_preview = (text) -> $.ajax url: '/api_markdown' type: 'POST' data: {text: text} success: (data) -> $('#preview').html(data) return error: (xhr, status, err) -> $('#preview').html 'エラー発生 ' + err return $('#page_body').on 'keyup change', -> update_preview($(this).val()) return

routes.rb

resources :pages post 'api_markdown' => 'pages#api_markdown'

_form.html.erb

<%= form_for(@page) do |f| %> <div class="field"> <%= f.label :body %><br> <%= f.text_area :body, cols: 80, rows: 10 %> </div> <div class="actions"> <%= f.submit %> </div> <% end %> <div id="preview"><%= qiita_markdown(@page.body) %></div>

###試したこと
jquery-turbolinksというgemをインストールして
//= require jquery.turbolinksを追記しました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

turbolinksを切れば正常に動くのですが、私はまだ初心者でturbolinksを切っていいものなのかどうか判断できません。

むしろ、初心者であれば、積極的にTurbolinksはオフにすることを推奨します(うまくJavaScriptと折り合いをつけるには、それなりの対処法が必要となってきます)。

あくまでTurbolinksは高速化のためのツールなので、それのお陰で正常に動かなくのであれば意味がありません。

投稿2017/04/06 04:52

maisumakun

総合スコア145183

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

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

riamk

2017/04/06 13:03

ご回答ありがとうございます。 Turbolinksはオフにして問題ないのですね! 色々調べてみたのですが、まだあまり理解できず悩んでいたのですが、オフにしてやっていこうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問