레일 튜토리얼을 따라 사용자가 리뷰를 제출할 수있는 장소의 디렉토리 웹 사이트를 만들어야합니다.리뷰를 장소 레일 웹 사이트 앱에 제출할 수 없음
은 지금, 여기에 일이 : 내가 사용자를 등록 할 수 있습니다
내가 로그인 할 수 있어요. 일단 로그인하면 데이터베이스에 새 장소를 만들 수 있습니다. 또한 내가 만든 각 장소의 웹 페이지에 액세스 할 수 있습니다.
그래도 문제가 있습니다. 각 장소 페이지에서 장소 리뷰를 제출할 수 없습니다.
모든 장소에는 주소, 전화 번호, 웹 사이트, 설명 및 해당 위치가있는지도가 있습니다. 그 같은 페이지에서 리뷰를 제출할 양식이 있지만 리뷰 작성 버튼을 클릭하면 아무 일도 일어나지 않습니다. 페이지에서 리뷰를 볼 수 없으며 레일 콘솔로 이동할 때 단 하나의 리뷰가 생성되지 않았 음을 분명히 알 수 있습니다. 이 코드를 내 응용 프로그램 /보기/리뷰/_review.html.erb 내부
<div class="form-inputs">
<%= f.input :content, required: true %>
<%= f.hidden_field :place_id, required: true, value: @place_id %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
: 내 응용 프로그램 /보기/리뷰/_form.html.erb 내부
이 코드를 가지고 :
<div class="row">
<div class="col-md-3">
<h3><%= @place.name %></h3>
<p><strong>Adress</strong><%= @place.address %></p>
<p><strong>Phone</strong><%= @place.phone %></p>
<p><strong>Website</strong><%= @place.website %></p>
<p><strong>Description</strong><%= @place.description %></p>
<div id="map-canvas" style = "width:230px; height:230px"></div>
</div>
<div class="col-md-9">
<h3>Reviews by People</h3>
<% if current_user %>
<h5>New Review</h5>
<%= render 'reviews/form' %>
<h5>All Reviews</h5>
<%= render @reviews %>
<% end %>
</div>
</div>
: 내 응용 프로그램/뷰/장소/show.html.erb 내부
<p>
<%= gravatar_tag review.user.email, size: 20 %><%= review.content %> by <%= review.user.name %>
</p>
이 코드를 내 places_controller.rb에
내가 가진 :
class PlacesController < ApplicationController
before_action :authenticate_user!, only: [:new, :edit, :create, :update, :destroy]
before_action :set_place, only: [:show, :edit, :update, :destroy]
# GET /places
# GET /places.json
def index
@places = Place.all
end
# GET /places/1
# GET /places/1.json
def show
@reviews = @place.reviews
@review = Review.new
end
# GET /places/new
def new
@place = Place.new
end
# GET /places/1/edit
def edit
end
# POST /places
# POST /places.json
def create
@place = current_user.places.new(place_params)
respond_to do |format|
if @place.save
format.html { redirect_to @place, notice: 'Place was successfully created.' }
format.json { render :show, status: :created, location: @place }
else
format.html { render :new }
format.json { render json: @place.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /places/1
# PATCH/PUT /places/1.json
def update
respond_to do |format|
if @place.update(place_params)
format.html { redirect_to @place, notice: 'Place was successfully updated.' }
format.json { render :show, status: :ok, location: @place }
else
format.html { render :edit }
format.json { render json: @place.errors, status: :unprocessable_entity }
end
end
end
# DELETE /places/1
# DELETE /places/1.json
def destroy
@place.destroy
respond_to do |format|
format.html { redirect_to places_url, notice: 'Place was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_place
@place = Place.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def place_params
params.require(:place).permit(:name, :address, :description, :phone, :website)
end
end
또한, 지금까지 ... 여기 내 reviews.controller.rb 코드 :
class ReviewsController <ApplicationController
before_action :authenticate_user!
before_action :set_review, only: [:edit, :update, :destroy]
def edit
end
def create
@review = current_user.reviews.new(review_params)
respond_to do |format|
if @review.save
format.html { redirect_to place_path(@review.place) , notice: 'Review was successfully created.' }
else
format.html { render :new }
end
end
end
def update
respond_to do |format|
if @review.update(review_params)
format.html { redirect_to place_path(@review.place), notice: 'Review was successfully updated.' }
else
format.html { render :edit }
end
end
end
def destroy
@review.destroy
respond_to do |format|
format.html { redirect_to place_path(@review.place), notice: 'Review was successfully destroyed.' }
end
end
private
def set_review
@review = Review.find(params[:id])
end
def review_params
params.require(:review).permit(:content, :place_id)
end
end
내가 저장할 수없는 이유의 어떤 통찰력 장소 리뷰?
'@ place_id '는 어디에 정의되어 있습니까? –
험, 내가 잘 모르겠지만 전화. 질문을 업데이트하려면 무엇이 유용할까요? 장소 컨트롤러? 지역 정보보기? – samureira
제 말은,'_form.html.erb'가'places # show' 내에 렌더링되었지만 당신의 show 메소드가'@ reviews'와'@ review' 만 가지고 있다면 말입니다. –