質問させていただきます。
teratailやqiitaのようなtextareaの編集の際リアルタイムで右画面に反映、表示させることがしたく、実装しようとチャレンジしていますが現状うまくいっておりません。
以下の記事の手順通りに進めています。
http://qiita.com/sachin21/items/e7df2720fbf362052f34
この記事の中の実装2の手順で
app.controller 'parsedMarkdownCtrl', ['$scope', ($scope) -> $scope.parseMarkdown = -> $("#preview").html(marked($scope.content)) ]
のコードをどこかに記す必要があるとのことなのですが、どこのファイルに書けば良いのか分かっておりません。 (場所もjsなのかcoffeeなのかも混乱しています)
わからないまま、自分なりに検索しつつapp.coffeeの中に書いたりしたのですが、全く機能しません....
angularの読み込む設定等理解できていないのが根本的な問題なのは分かっておりますが、どうにかして実装したいと思っております。大変お手数おかけしますが、教えていただけないでしょうか....
Noteモデルのbodyカラムでリアルタイムプレビュー機能をつけたいです
参考までに現状のファイルは以下のようになっております。
ruby
1Gemfile 2 3source 'https://rubygems.org' 4gem 'rails', '4.2.4' 5gem 'sass-rails', '~> 5.0' 6gem 'uglifier', '>= 1.3.0' 7gem 'coffee-rails', '~> 4.1.0' 8gem 'jquery-rails' 9gem 'turbolinks' 10gem 'jbuilder', '~> 2.0' 11gem 'sdoc', '~> 0.4.0', group: :doc 12gem 'materialize-sass' 13gem 'redcarpet', '~> 3.3', '>= 3.3.4' # markdown 14gem "angular-rails-engine" 15gem 'marked-rails' # markdownをparseしてくれる 16gem 'coderay', '~> 1.1' 17 18group :development do 19 gem 'sqlite3' 20 gem 'web-console', '~> 2.0' 21 gem 'spring' 22end
ruby
1app/assets/javascripts/application.js 2 3//= require jquery 4//= require materialize-sprockets 5//= require jquery_ujs 6//= require jquery.timeago 7//= require turbolinks 8//= require_tree . 9//= require marked
共通テンプレート内でangularを読み込んでいます。
ruby
1app/views/layouts/application.html.erb 2 3<!DOCTYPE html> 4<html ng-app> 5<head> 6 <title>プレビュー</title> 7 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> 8 <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 9 <%= csrf_meta_tags %> 10 <%= yield :head %> 11 <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> 12 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> 13 <script src="lib/marked.js"></script> 14 <!-- GoogleデベロッパーツールでGET http://localhost:3000/notes/lib/marked.js 404 (Not Found)というエラーが出てます --> 15</head> 16<body> 17 18 {{6 * 8}} <!--48と表示されます --> 19 20 <div class="container"> 21 <%= yield %> 22 </div> 23</body> 24</html>
noteのフォーム画面です(ここのbodyを編集している時にリアルタイムプレビューにしたいです)
<%= form_for(@note) do |f| %> <%= f.text_field :body, 'ng-model' => 'body', "ng-change" => 'parseMarkdown()', id: 'note_body', name: 'note[body]' %> <div class="right" id='preview'></div> <div class="actions"> <%= f.submit "投稿!" %> </div> <% end %>
↓このコードをどこに書いていけば良いのかがわかりません.....
自分なりにapp/assets/javascripts/app.coffeeに書いてみたのですが、appが無いですよというエラーが出たりもしていて全然わからないです....
app.controller 'parsedMarkdownCtrl', ['$scope', ($scope) -> $scope.parseMarkdown = -> $("#preview").html(marked($scope.body)) ]
自分で解決するのは難しいと判断したため、、質問させていただきました。
どんなことでも良いので、回答いただけますと本当に嬉しく思います。
お休みの中お手数おかけしますが何卒よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/14 18:03