Witam. Chcę zrobić w swoim projekcie tworzenie artykułu i podczas tworzenia go możliwość wybrania z listy wyboru kategorię do której ten artykuł ma należeć. W modelach mam wpisane odpowiednio has_many, belongs_to… niestety wywala mi błąd “Couldn’t find Category without an ID”. oto moje pliki :
reviews_controller:
class ReviewsController < ApplicationController
GET /reviews
GET /reviews.xml
layout ‘public’
def index
@reviews = Review.paginate :page => params[:page], :order => ‘created_at DESC’, :per_page => 7
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @reviews }
end
end
GET /reviews/1
GET /reviews/1.xml
def show
@review = Review.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @review }
end
end
GET /reviews/new
GET /reviews/new.xml
def new
@review = Review.new
@categories = Category.find(:all)
@choice = Category.find(params[:select1])
@choice.review.create(params[:review])
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @review }
end
end
GET /reviews/1/edit
def edit
@review = Review.find(params[:id])
end
POST /reviews
POST /reviews.xml
def create
@review = Review.new(params[:review])
respond_to do |format|
if @review.save
flash[:notice] = 'Review was successfully created.'
format.html { redirect_to(@review) }
format.xml { render :xml => @review, :status => :created, :location => @review }
else
format.html { render :action => "new" }
format.xml { render :xml => @review.errors, :status => :unprocessable_entity }
end
end
end
PUT /reviews/1
PUT /reviews/1.xml
def update
@review = Review.find(params[:id])
respond_to do |format|
if @review.update_attributes(params[:review])
flash[:notice] = 'Review was successfully updated.'
format.html { redirect_to(@review) }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @review.errors, :status => :unprocessable_entity }
end
end
end
DELETE /reviews/1
DELETE /reviews/1.xml
def destroy
@review = Review.find(params[:id])
@review.destroy
respond_to do |format|
format.html { redirect_to(reviews_url) }
format.xml { head :ok }
end
end
end
widok dla akcji “new”:
Nowa Recenzja
<%= form_tag :action =>'new' %> <% for category in @categories %> <%= category.title %> <% end %> <% end %><%= form_tag :action => ‘new’, :id => @choice %>
Tytul:
<%= text_area ‘review’, ‘title’ %>
Treść:
<%= text_area 'review, ‘text’%>
<% end %>
<%= f.submit 'Create' %>
<% end %>
<%= link_to ‘Back’, reviews_path %>
proszęo szybką i fachową pomoc jak to rozwiązać.