-1

해결할 수없는 문제가 있습니다. 나는 두 가지 모델을 만들었다. Film이라는 한 모델이 상위 모델이고 Review라는 다른 모델이 하위 모델입니다. 하위 모델에 대한 유효성 검사 조건이 있지만 뷰에 표시되지 않습니다.하위 모델 Ruby on Rails의 오류 유효성 확인

필름 모델

class Film < ApplicationRecord 
has_many :reviews 

validates_presence_of :filmtitle, presence: true 
validates_presence_of :filmdescription, presence: true 
validates_presence_of :filmdirector, presence: true 
validates_presence_of :filmrating, presence: true 
validates_presence_of :filmstarname, presence: true 
end 

검토 모델

class Review < ApplicationRecord 
validates :rating, presence: true 
validates :commenter, presence: true 
validates :body, presence: true 
belongs_to :film 
end 

검토 컨트롤러

class ReviewsController < ApplicationController 
def create 
    @film = Film.find(params[:film_id]) 
    @review = @film.reviews.create(review_params) 
    redirect_to film_path(@film) 
end 

private 
def review_params 
    params.require(:review).permit(:commenter, :body, :rating) 
end 
end 

필름 show.html.erb

<% if @film.errors.any? %> 
<div id="error_explanation"> 
    <h2> 
    <%= pluralize(@film.errors.count, "error") %></h2> 
    <ul> 
    <% @film.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
    <% end %> 
    </ul> 
    </div> 
    <% end %> 
<%= form_for([@film, Review.new]) do |f| %> 
<p> 
<%= f.label :commenter %><br> 
<%= f.text_field :commenter, :placeholder => 'Your name' %> 
</p> 
<p> 
<%= f.label :body %><br> 
<%= f.text_area :body, :placeholder => 'Your comment' %> 
</p> 
    <p> 
    <%= f.label :rating %><br> 
    <%= f.select :rating, ['1 Star', '2 Stars', '3 Stars', '4 Stars', '5 Stars'] %> 
</p> 
    <p> 
<%= f.submit %> 
    </p> 
<% end %> 
당신은 루비 온 레일-3, 루비 - 온 - rails-로 태그 한 한 이유는

필름 컨트롤러

class FilmsController < ApplicationController 
before_action :set_film, only: [:show] 

# GET /films 
# GET /films.json 
def index 
@films = Film.all.paginate(page: params[:page], per_page: 30) 
@reviews = Review.new 
end 

# GET /films/1 
# GET /films/1.json 
def show 
end 

# GET /films/new 
def new 

end 

# GET /films/1/edit 
def edit 
end 

# POST /films 
# POST /films.json 
def create 

end 

# PATCH/PUT /films/1 
# PATCH/PUT /films/1.json 
def update 

end 

# DELETE /films/1 
# DELETE /films/1.json 
def destroy 

end 

private 
# Use callbacks to share common setup or constraints between actions. 
def set_film 
    @film = Film.find(params[:id]) 
end 

# Never trust parameters from the scary internet, only allow the white list through. 
def film_params 
    params.require(:film).permit(:filmtitle, :filmdescription) 
end 
end 

route.rb

Rails.application.routes.draw do 
    resources :films do 
resources :reviews 
    end 


    resources :rentals 
    resources :buys 
    resources :admin 
    resources :adminrentals 
    resources :adminfilms 
    resources :logins 
    resources :admins_login 
    resources :games 


    get '/adminCool' => 'admins_login#index' 

    get '/adminlogin' => 'admins_sessions#new' 
    post '/adminlogin' => 'admins_sessions#create' 
    get '/adminlogout' => 'admins_sessions#destroy' 

    get '/adminsignup' => 'admins#new' 
    post '/admins' => 'admins#create' 


    get '/login' => 'sessions#new' 
post '/login' => 'sessions#create' 
get '/logout' => 'sessions#destroy' 

get '/signup' => 'users#new' 
post '/users' => 'users#create' 

get '/cool' => 'logins#index' 



end 
+0

을 시도하십시오 4, ruby-on-rails-3.2 ... 이것은 당신이 모든 버전에서 겪고있는 문제입니까? 컨트롤러에 대한 실제 코드는 어디에 있습니까? – David

+0

두 컨트롤러 모두 위에 언급되어 있습니다. render 함수를 실행할 때마다 http : // localhost : 3000/films/18/reviews 주소로 이동합니다. http : // localhost : 3000/films/18로 돌아 간다고 가정합니다. 나는 아래의 Gaston에 의해 주어진 코드를 사용했다. – javacoder

답변

0

def create 
    @film = Film.find(params[:film_id]) 
    @review = @film.reviews.new(review_params) 
    if @review.save 
     redirect_to film_path(@film) 
    else 
     render "films/#{@film.id}" 
    end 
end 
+0

오류 메시지를 표시하지 않지만 인터페이스에 공백 결과를 표시합니다. – javacoder

+0

다음을 수행하면 {: locale => [: en], : formats => [: html], : variant :> [], : 핸들러 => [ : 원시, : erb, : html, : 빌더, : 루비, : 커피, : jbuilder]}. 검색된 위치 : * "C :/Users/azhan/Desktop/film_project/app/views"?????? – javacoder

+0

죄송합니다. 큰 따옴표가 없습니다. "films/show/#{@film.id}"렌더링이 효과가 있습니까? – Gaston