【问题标题】:Rails: Create Method and Index Method NoMethodError issueRails:创建方法和索引方法 NoMethodError 问题
【发布时间】:2017-09-30 15:25:53
【问题描述】:

我有一个名为 ReferralRequest 的模型的索引视图和操作。当我创建推荐请求时,我的控制器中的 create 方法会呈现索引,并且在 index 方法中我有 @referral_requests = ReferralRequest.all。

然而,由于某种原因,当我在 /new 表单上点击提交并成功创建推荐请求时,我在 ReferralRequests#create 中收到 NoMethodError,这是索引视图中此行中未定义的方法“each”:

<% @referral_requests.each do |referral_request| %>

我可以通过将 @referral_requests = ReferralRequest.all 添加到我的 create 方法来解决此错误,但这对我来说似乎是错误的。

谁能弄清楚发生了什么?感谢您的反馈!

这是我的完整推荐请求控制器:

class ReferralRequestsController < ApplicationController
    before_action :require_login

    def index
        @referral_requests = ReferralRequest.all
    end

    def edit
        @referral_request = ReferralRequest.find(params[:id])
    end

    def update
        @referral_request = ReferralRequest.find(params[:id])
        if @referral_request.update_attributes(referral_request_params)
            flash[:success] = "Referral Request Updated!"
            render 'referral_requests/index'
        else
            render "edit"
        end
    end


    def create
        @referral_request = current_user.referral_requests.build(referral_request_params)
        if @referral_request.save
            flash[:success] = "Referral Request Created!"
            render 'referral_requests/index'
         else
    Rails.logger.info(@referral_request.errors.inspect)
      @feed_items = []
      render 'static_pages/home'

    end
  end

    def destroy
    end

    def new
    @patient = Patient.find(params[:patient_id]) 
    @referral_request = current_user.referral_requests.build(patient: @patient) if signed_in?
    end

    def show
    @referral_request = ReferralRequest.find(params[:id])
    end



private

def referral_request_params
    params.require(:referral_request).permit(:content, :patient_id, concern_ids: [],
     insurance_ids: [], race_ids: [], language_ids: [], gender_ids: [])

end
end

【问题讨论】:

  • 可能您在 ReferralRequest 控制器中缺少这些方法之间的“结束”
  • 你的新动作是什么样的?
  • 感谢您的帮助 - 我刚刚将我的整个推荐请求控制器添加到原始问题中。

标签: ruby-on-rails nomethoderror


【解决方案1】:

改变这一行: render 'referral_requests/index'

到:

redirect_to action: :index

因为渲染模板本身不会调用控制器动作索引,但重定向会

【讨论】:

    猜你喜欢
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2012-07-26
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多