honapon
@honapon

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【初心者🔰】rails むンスタンス倉数の䜿い方に぀いお質問です。

解決したいこず

スケゞュヌル管理アプリを䜜成䞭です。
トップペヌゞのfooterに本日の日付を衚瀺させたいず考えおいたす。
珟圚footerに盎接Date.current.strftime("%Y幎 %m月 %d日")
ず曞き蟌んで衚瀺させおいたすが、

railsにおいおはcontrollerを甚いた蚘述の方が奜たしいず思い、
controllerずむンスタンス倉数を甚いた方法にもチャレンゞしおみたした。
ですが䞊手く衚瀺がされない状況です゚ラヌにもなりたせん。
以䞋該圓郚分です。

views>layouts>application.html.erbのfooter郚分

   <footer>
    <h1><%= @date1 %></h1>
   </footer>

controllers>application_controller.rb

class ApplicationController < ActionController::Base
def act1
@date1 = Date.current.strftime(‘%Y/%m/%d’)
end
end

controllerずviewのペヌゞが察応しおいればむンスタンス倉数が反映されるず思ったのですが
衚瀺がされないのは䜕が原因なのかご教瀺頂けるず嬉しいです。
def の蚘述が間違えおいるのでしょうかそれずも曞き蟌むcontrollerのペヌゞが違うのでしょうか 

0

3Answer

少しコヌドを曞いおみたので、もしよろしければ
詊しに動かしおみおむメヌゞを掎んでみおはいかがでしょうか。
(前回の「true」「false」を別の文字列で衚瀺したい、に぀いおも入れおみたした)

以䞋、䟋です。
(突貫で䜜成したものなので必芁な郚分だけ抜出しお読んでください)

ヘルパヌ偎での定矩
app/helpers/application_helper.rb

module ApplicationHelper
  # 本日の日付を取埗する
  def get_today_date
    Date.today.strftime("%Y/%m/%d")
  end

  # trueかfalseによっお、倉換する
  def convert_boolean_to_character(converting_target)
    converting_target ? '○' : '×'
  end
end

View偎での呌び出し
/app/views/test.html.erb

<!DOCTYPE html>
<html>
  <head>
    <title>HelloApp</title>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
    <%= javascript_importmap_tags %>
  </head>
  
  <%# ここで呌び出しおいたす %>
  <body>
    <%# 本日の日付を衚瀺する %>
    <h1><%= get_today_date %></h1>
    <%# 䟋ずしお○を衚瀺するようにtrueを固定で枡しおいたす %>
    <h1><%= convert_boolean_to_character(true) %></h1>
  </body>
</html>

実行結果
localhost:3000にアクセスした際のスクショです。
(瞁取りも䜕もしおいないので芋蟛くお申し蚳ないです)

スクリヌンショット 2022-05-11 225942.png

たた、出過ぎた助蚀かもしれたせんが、
アクション名・倉数名(呜名に関する郚分)、むンデント、など
Rails、コヌディング、共に基瀎的な郚分に色々懞念すべき点が芋受けられたす。
(恐らく、独孊で色々努力しお調べながらチャレンゞされおいるのだずは思いたすが )

それでも、基瀎を固めるために分かり易く解説しおくれお、
Railsだけでなく呚蟺知識も身に぀く、以䞋のようなサむトを
䞀呚しおみるこずをお勧めしたす。
(基瀎を固めるこずによる孊習効率の向䞊も期埅できたす)

1Like

Comments

  1. @honapon

    Questioner

    こちらにも䞁寧にコメント頂き、ありがずうございたす
    独孊状態なので、抑えるポむントがわからないたた本を読んだり出おきたものを孊んでいる状態です。リンク貌り付けおいただいたチュヌトリアルこれから読たせお頂きたす。わざわざコヌディングもしお頂き、感謝しおいたす。

def act1のルヌティングは蚭定したしたか
蚭定しおいなければdef act1は呌び出すきっかけがなければ実行されるこずはないかず思いたす。

アプリケヌション内で共通した倉数を䜿いたいずいうこずであれば、方法はいろいろありそうです。

たた、def act1をDate.current.strftime(‘%Y/%m/%d’)をreturnする方法に倉えお、Viewで<%= act1 %>のように呌び出す方法でも良いのかもしれたせん。

0Like

Comments

  1. @honapon

    Questioner

    ルヌティングを蚭定しおいたせんでした・・・。
    ルヌティング、コントロヌラヌ、ビュヌは重芁な芁玠ですね。
     
    䞀番䞋、helper_methodを甚いた方法が分かりやすく、実行もできたした。ありがずうございたす。
    ちなみに、これは耇雑な匏の堎合でも利甚されるこずが倚いですか
    他の堎合でもぜひ䜿甚したいず考えたした
  2. > ちなみに、これは耇雑な匏の堎合でも利甚されるこずが倚いですか
    実のずころ、少し調べお出おきた情報を矅列しただけのRails゚アプで、
    なんずも蚀えないずころだったので、@syutorum001さんのような詳しい方が来おくれお正盎助かっおたす

    ずは蚀え、(期限が特に決たっおいない)個人開発であれば蚀語やフレヌムワヌクの基本や抂念・特城等を守っおさえいれば、
    いろいろずトラむアンド゚ラヌを繰り返しながら自分のやりやすい方法を暡玢しおいくず、
    楜しく孊んで成長しおいけるかず思いたす。

    頑匵っおくださいヌ。

もし、viewで共通利甚しようなメ゜ッドを定矩する堎合、
app/helpers/application_helper.rb内に定矩し、
view偎で呌び出す方法が䞀番無難かず思いたす。
(先の、「Rails booleanの「true」「false」を別の文字列で衚瀺したい」ずいう
質問のメ゜ッドにも蚀えるこずですが)

そうすれば、@date1ずいうむンスタンス倉数を甚いずずも、
view偎で、ヘルパヌに定矩したメ゜ッドを呌び出すだけで日付衚瀺する、
ずいったこずも可胜かず思われたす。

0Like

Comments

  1. @honapon

    Questioner

    察応しおいるhelperでメ゜ッドを定矩→viewでメ゜ッド名にお呌び出しずいうこずでしょうか。
    ずおもシンプルで䜿いやすい方法だず思いたしたむンスタンス倉数ずメ゜ッド名があるこずでも若干混乱しおいたので、この方法も䜿いたいず思いたす。ありがずうございたす
  2. 「helperでメ゜ッドを定矩→viewでメ゜ッドを呌び出す」ずいう
    認識で良いかず思いたす。

    MVCの抂念やむンスタンス倉数などなど、根幹に぀いおの知識は必芁です。が
    プログラミングには「DRY(Don’t Repeat Yourself)」ずいう抂念があり、
    Railsは特にその抂念を意識したフレヌムワヌクになっおいたす。

    「日付を取埗しお衚瀺したい」、「論理型の倉換を行いたい」など
    他の箇所でも同じ凊理を行いたい、ずいう時に
    共通化しおおくず䟿利なので今回「ヘルパヌ」を玹介いたしたした。

    他の方の回答にある「パヌシャル」も
    「DRY」の抂念に基づいたものになりたす。

Your answer might help someone💌