简体   繁体   English

私有方法“ main_image”是否需要nil:NilClass? 怎么修

[英]private method `main_image' called for nil:NilClass? how to fix

portfolios_controller.rb portfolios_controller.rb

class PortfoliosController < ApplicationController
  def index
    @portfolio_items = Portfolio.all 
  end

  def new
    @portfolio_item =Portfolio.new
  end

  def create
    @portfolio_item =Portfolio.new(params.require(:portfolio).permit(:title, :subtitle, :body))

    respond_to do |format|
      if @portfolio_item.save
        format.html { redirect_to portfolios_path, notice: 'Your Portfolio Item is now live.' }
        format.json { render :show, status: :created, location: @blog }
      else
        format.html { render :new }
        format.json { render json: @blog.errors, status: :unprocessable_entity }
      end
    end
  end

  def edit
    @portfolio_item = Portfolio.find(params[:id])
  end

  def update
    @portfolio_item = Portfolio.find(params[:id])
    respond_to do |format|
      if @portfolio_item.update(params.require(:portfolio).permit(:title, :subtitle, :body))
        format.html { redirect_to portfolios_path, notice: 'The record successfully updated.' }
      else
        format.html { render :edit }
      end
    end
  end 
end

def show
   @portfolio_item = Portfolio.find(params[:id])
end

show.html.erb show.html.erb

<%= image_tag @portfolio_item.main_image %>

<h1><%= @portfolio_item.title %></h1>

<em><%= @portfolio_item.subtitle %></em>

<p><%= @portfolio_item.body %></p>

Add show action 添加show动作

def show
  @portfolio_item = Portfolio.find(params[:id])
end

In your portfolios_controller 在你的portfolios_controller

private method `main_image' called for nil:NilClass? 私有方法“ main_image”是否需要nil:NilClass?

You are ending the class PortfoliosController before show method, so it lost the scope. 您在show方法之前结束了 PortfoliosController ,因此它失去了作用域。 Put it inside the PortfoliosController 将其放在 PortfoliosController

def update
  @portfolio_item = Portfolio.find(params[:id])
  respond_to do |format|
    if @portfolio_item.update(params.require(:portfolio).permit(:title, :subtitle, :body))
      format.html { redirect_to portfolios_path, notice: 'The record successfully updated.' }
    else
      format.html { render :edit }
    end
  end
end 

def show
   @portfolio_item = Portfolio.find(params[:id])
end
end #class end

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何更正main_image的未定义方法? - How do I correct this undefined method for main_image? 错误(为nil:NilClass调用了私有方法“ select”): - Error (private method `select' called for nil:NilClass): NoMethodError:私有方法`warn&#39;调用nil:NilClass - NoMethodError: private method `warn' called for nil:NilClass 如何为nil:NilClass修复“未定义的方法错误”? - How to fix “undefined method `errors' for nil:NilClass”? 私有方法`update_without_password&#39;调用了nil:NilClass - private method `update_without_password' called for nil:NilClass 如何使用HtmlFormatter运行RSpec? 获取“私有方法`puts”调用nil:NilClass“ - How to run RSpec using HtmlFormatter? Getting “private method `puts' called for nil:NilClass” 如何解决“ NoMethodError(nil:NilClass的未定义方法[]”):应用程序/控制器/…” - How to fix “NoMethodError (undefined method []' for nil:NilClass): app/controllers/…” 如何使用devise为nil:NilClass修复未定义的方法“电子邮件” - How do I fix undefined method `email' for nil:NilClass with devise 如何为 nil:NilClass 错误修复未定义的方法“split”? - How to fix undefined method `split' for nil:NilClass error? Ruby on Rails 如何修复 NoMethodError: undefined method `id' for nil:NilClass - Ruby on Rails how to fix NoMethodError: undefined method `id' for nil:NilClass
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM