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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

Q&A

解決済

1回答

1096閲覧

link_toメソッドの引数にインスタンス変数を使う方法

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

0グッド

0クリップ

投稿2017/08/20 15:35

編集2017/08/21 16:10

###該当のソースコード

(crawlers_controller.rb) require 'nokogiri'をし、indexアクションでsitesテーブルのid=1のcheckカラムに <a href="https://~">記事のタイトルや内容</a> を保存。 @site1 = Site.find(1)でそのレコードをインスタンス変数に代入。
(index.html.erb) <div> <%= link_to "ああああ", @site1.check_place[:href], :target=>["_blank"] %> </div>

sitesテーブルid=1のcheck_placeに保存された、
<a href="https://~">記事のタイトルや内容</a>
のurlだけを取り出しlink_toの第二引数に当てたいのですがno implicit conversion of Symbol into Integer
というエラーが出てしまいうまくできません。なぜエラーになってしまうのでしょうか?

タグをエスケープせずに「記事のタイトルや内容」をクリックしたら別タブでその内容の記事が見れるようにしたいです。

(index.html.erb) <div class="center-content"> <%= link_to "", @site1.check_place.html_safe, :target=>["_blank"] %> </div>

だと何故かできるのですが。第一引数がないのにビューに「記事のタイトルや内容」と表示がされるのは何故なのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

@site1.check_place.class
でクラスを確認してください。おそらくStringになるはずです。なので
@site1.check_place[:href]
はエラーになります。
<%= link_to "", @site1.check_place.html_safe, :target=>["_blank"] %>

<%= link_to "", '<a href="https://~">記事のタイトルや内容</a>', :target=>["_blank"] %>
と書いているのとほぼ同じです。
ブラウザでソースをみるとlink_toがどのようにHTMLに変換されているかを確認できるはずです。
この辺りを参考に

投稿2017/08/23 01:44

NCC1701

総合スコア1680

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

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

退会済みユーザー

退会済みユーザー

2017/08/23 10:12 編集

ご回答ありがとうございます。 stringになっていますした。nokogiriのオブジェクトでなくなったのでnokogiriの[:href]メソッドが使えなかったのかなと思いました。 mysqlのcheck_placeカラムに保存をした、 「<a href="https://~">記事のタイトルや内容</a>」 のテキスト部分や、hrefの属性値だけをmysql文ではなくrails文で取り出すにはどのようにすればいいのでしょうか?
NCC1701

2017/08/24 00:26

直接的な回答ではありませんが、私ならそもそもcheck_placeカラムに保存する段階で、hrefの属性値のみにします。それならばnokogiriのメソッドを使えますし、データベースの設計にも合致するからです。
退会済みユーザー

退会済みユーザー

2017/08/24 10:49

それは私の思ったのですが、href属性値とaタグに囲まれたテキスト部分と二つカラムを作って保存しないといけなくなり、処理が遅くなったりでもするのかなと思いまして。
NCC1701

2017/08/24 13:44

速度については、厳密にはベンチマークをとって比較して判断することになるでしょう。私なら、簡単、シンプル、分かりやすい、メンテしやすいコードを書きます。その上で、実際に処理速度に問題が生じたら、原因の部分のみを改良するでしょう。 (もっともRailsのフレームワークを作っている方々が、処理速度を考慮していないなんてことはないでしょうから、概ねセオリー通りの作りをしていれば、大抵は満足できてます。) なお、「<a href="https://~">記事のタイトルや内容</a>」の取り出し方は、質問テーマが変わるので、別立てに質問し直した方が良いです。基本的にはStringクラスの取り扱いの問題です。
退会済みユーザー

退会済みユーザー

2017/08/26 15:57

そうですね。改めて質問させていただこうと思います。ご回答ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問