레일 4에서 컨트롤러의 URL에서 매개 변수를 가져 오는 데 문제가 있습니다.Ruby on Rails : URL에서 매개 변수 얻기
has_many 및 belongs_to 연관이있는 두 개의 모델이 있는데, Books 및 Pages라고 부르기로합니다. 나는 새로운 페이지 레코드를 만들고 사용자가 "Create"버튼을 클릭했을 때 방문한 책 (즉, 사용자가 Jurassic Park 책 페이지에 있었고 "Create, "나는 쥬라기 공원 책과 관련된 새로운 페이지를 만들고 싶다. 여기
은 내 시야에서 링크를 만들 수 있습니다 :나는 완전히이 일을 오전 : 나는 다음과 같은 오류가"ActiveRecord::RecordNotFound in PagesController#create - Couldn't find Book without an ID"
def new
@page = Page.new
end
def create
@book = Book.find(params[:book])
@page = Product.new(page_params)
@page.book_id = @book.id
if @page.save
flash[:success] = "Page Submitted!"
redirect_to @book
else
render 'new'
end
end
: 여기
<%= link_to "Create page", new_page_path(:book => @book.id), :id => "submit-button" %>
내 컨트롤러 잘못된? Rails 4가 URL 매개 변수를 가져 오는 것과 동일한 구문 인 params의 작동 방식을 변경 했으므로이 문제를 일으키는 원인이 될 수 있습니다.
편집 : 변수로 '새'매개 변수를 가져 와서 그 ID로 사용하려고했지만 동일한 오류 메시지가 나타납니다.
안녕 :
그런 다음에 방법을 만들려면을 업데이트합니다. Rails4에서는 strong_parameters가 기본값입니다. 그래서 당신은 URL이나 폼에서 얻은 모든 매개 변수를 허가해야합니다. 귀하의 경우에는 'book_params'가 있어야하며이 book_params는 find와 함께 사용할 수 있습니다. [: 책] .permit (: 아이디, 이름) end' – Zoltan
'@book = Book.find (book_params은)''에서 는 가'데프 PARAMS을 book_params 컨트롤러에 private' – Zoltan