Я относительно новым для программирования и рельсы так, пожалуйста, будьте снисходительны :)Rails - маршрутизация при вложенности с рельсами - начинающий
Я строю сайт для себя, который содержит блог. У меня две вложенные модели, и я, похоже, не понимаю, как использовать REST для выполнения определенных действий над моими статьями и комментариями.
Когда я создаю комментарий, если комментарий не проходит проверку, я хочу, чтобы он снова отображал страницу, чтобы пользователь мог исправить свои ошибки и повторно отправить комментарий. Когда я пытаюсь выполнить рендеринг, это дает мне недостающую ошибку шаблона.
Вот код:
Вы также можете найти этот код на GitHub ->https://github.com/MariusLucianPop/mariuslp-
routes.rb
Mariuslp::Application.routes.draw do
get "categories/new"
root :to => "static_pages#index"
match "login" => "visitors#login" # not rest
match "logout" =>"visitors#logout" # not rest
match "comment" => "articles#show"
resources :articles do
resources :comments
end
resources :tags, :taggings, :visitors, :categories, :comments
end
articles_controller.rb
def show
@article = Article.find(params[:id])
@comment = @article.comments.new
end
comments_controller.rb
def create
article_id = params[:comment].delete(:article_id)
@comment = Comment.new(params[:comment])
@comment.article_id = article_id
if @comment.save
redirect_to article_path(@comment.article_id)
else
render article_path(@comment.article_id,@comment) ## This one doesn't work
end
end
def new
@comment = Comment.new
end
def destroy
Comment.find(params[:id]).destroy
redirect_to articles_path()
end
видовые статьи: _comment.html.erb
<div class="comment">
<%= comment.body %><br />
<%= link_to "Delete Comment", article_comment_path(@article), :method => :delete, :confirm => "Are you sure you want to delete this comment?" %>
</div>
_comment_form.html.erb
<%= form_for @comment do |f|%>
<%= f.hidden_field :article_id%>
<%= f.label :body %><br />
<%= f.text_area :body, :cols => 50, :rows => 6 %><br />
<%= f.submit%>
<%end%>
show.html.erb
<p><%= link_to "<< Back to Articles", articles_path%></p>
<div class = "article_show">
<%= label_tag :category_id %>
<%= @article.category_id%> <br />
<%= label_tag :title%>:
<%= @article.title%> <br />
<%= label_tag :body%>:
<%= @article.body%> <br />
<%= label_tag :tag_list%>:
<%= @article.tag_list%><br />
</div>
<br />
<% if session[:username]== "marius"%>
<div class ="admin">
<%= link_to "Edit", edit_article_path(@article)%>
<%= link_to "Delete", article_path(@article), :method => :delete, :confirm => "Are you sure you want to delete this article ?"%>
</div>
<%end%>
<br />
<%= render :partial => 'comment', :collection => @article.comments %>
<%= render :partial => 'comment_form'%>
Точно, вы * визуализации * представления, не путь. Хотя я предполагаю, что это должно быть «рендерить» статьи/показать », потому что, похоже, происходит комментирование. – Mischa
Он работает, если я использую render 'comments/new', если у меня есть вид, названный new под комментариями. Проблема в том, что я хочу отобразить представление, на котором пользователь изначально включен. Я хочу отобразить представление, в котором есть все остальные комментарии. –
@ Миша: Да, вы правы. Исправленный. – Matzi