###前提・実現したいこと
Railsアプリケーションで、controllerのメソッドをviewのパーシャルから呼び出す際にエラーが発生していて、そのエラーを解消したいと思っています。
※その後、追加修正依頼を受けて、controllerのメソッドを
app/helpers 配下のヘルパーメソッドに書き換えました。
追記の部分をご覧ください。
テキストをマイクロポストとして投稿できるWEBサービスを開発しています。
Rails 4.2.2
Ruby 2.0.0
で開発をしています。
###発生している問題・エラーメッセージ・コード
viewでは下記のようなコードを記述していて、<%= feed_micropost_id %>の部分でエラーが発生しています。
<li id="micropost-<%= micropost.id %>"> <button class="btn-old-micropost view-protocol"> <span class="content"> <%= micropost.content %> <%= feed_micropost_id %> <%= image_tag micropost.picture.url if micropost.picture? %> </span> <span class="timestamp"> Posted <%= time_ago_in_words(micropost.created_at) %> ago. <% if current_user?(micropost.user) %> <% link_to "delete", micropost, method: :delete, data: { comfirm: "You sure?" } %> <% end %> </span> </button> </li>
サーバーログを確認すると、下記のようなerrorが発生しています。
NameError (undefined local variable or method `feed_micropost_id' for #<#<Class:0x007f7fe41dcea8>:0x007f7fe41df478>):
feed_micropost_idは、microposts_controller.rbの下記のコードで定義しています。
class MicropostsController < ApplicationController before_action :logged_in_user, only: [:create, :destroy, :show, :update ] before_action :set_micropost, only: [:destroy, :show] helper_method :feed_micropost_id # 中略 def feed_micropost_id(micropost_id) @micropost_procedure = feed_protocol(micropost_id) end # 略
###試したこと
feed_micropost_idが利用できない原因を特定するためにネットで情報を収集し、
helper_methodを利用することで解決できないか試してみました。
上記のcontrollerのコードのように、helper_methodを入れてみたのですが、
エラーは解消されませんでした。
追加で情報が必要であれば、言っていただけるとありがたいです!
よろしくお願いします。
###追記
追加修正依頼ありがとうございます!
コメントにもいただいたように、helperに同じfeed_micropost_idメソッドを定義して試してみました。
app/helpers/micropost_helper.rbを下記の記述にしました。
module MicropostsHelper def feed_micropost_id(micropost_id) @micropost_procedure = feed_protocol(micropost_id) end end
ちなみに、この時に viewのエラー該当部分では<%= feed_micropost_id %>と記述しています。
エラーの内容が変わって、下記のエラーになりました!
wrong number of arguments (0 for 1)
メソッドはviewから取得できました。
引数を渡して、viewの該当部分を<%= feed_micropost_id(800) %>としてみました。
すると、下記のエラーに変わっています。
undefined method `feed_protocol'
このfeed_protocolというメソッドは、models/user.rbの中で定義しているのですが
app/helpersからは、modelないで定義したメソッドは取得できないのでしょうか、、?
回答2件
あなたの回答
tips
プレビュー