문제는 내가 충전 컨트롤러의 쇼 기능에서 선언 한 인스턴스 변수가 뷰에 nil로 표시된다는 것입니다. 인스턴스 변수를 숫자로 설정하면 뷰에 나타나지 않습니다. 우리 집 함수는 인스턴스 변수와 완벽하게 작동합니다. 이 내 시야가레일스 뷰에서 인스턴스 변수가 항상 Nil 인 이유
<h1>Product Details</h1>
<h3> <%= @product.name %> </h3>
<h4> <%= @product.price %> </h4>
<h5> <%= @product.description %> </h5>
입니다 :이 표시 기능에 대한 내보기 (show.html.erb)입니다
class ChargesController < ApplicationController
def home
@products = Product.all
end
def show
@product = Product.find_by(id: params[:id])
end
:
이것은 가정 및 표시 기능을 가진 내 컨트롤러입니다 쇼 페이지로 지시하는 버튼 (home.html.erb)
<h1>Products</h1>
<% @products.each do |product| %>
<br>
<p> <%= product.name %>: $<%= product.price %> </p>
<p> <%= product.description %> </p>
<%= button_to "Product Details", charge_path(product.id), :method => "get" %>
<br>
<%end%>
error message I'm receiving가 들어있는 홈 기능 기본적으로
해당 식별자를 가진 제품을 찾을 수없는 경우 예외를 throw하는'find_by!'메소드를 사용해보십시오. 오류를 나타 내기 위해 이것을'rescue_from '할 수 있습니다. 데이터베이스 작업이 성공했다고 가정하면 대개 실수입니다. – tadman
하지만 Product.first와 같이 존재하더라도. 이 함수는 집 함수에서 인스턴스 변수로 설정했지만 show 함수에서는 설정하지 않으면 작동합니다. 여전히 nil이 표시됩니다. 나는 find_by를 사용할 것이다! 대신에, 고마워. –
'@ products'와'@ product'을 혼동하고 있습니까? show에서 실행되는 유일한 메소드는'@ product'를 채우는 메소드입니다. 'show' 액션이'@product'를 성공적으로 채우면 뷰에서 작동합니다. 그렇지 않으면 코드의 일부 다른 비트가 값을 다시 할당하거나 그 코드가 어떻게 든 처음부터 실행되지 않았습니다. – tadman