Я пытаюсь создать комментарии для продукта. Как-то я не могу передать значение в текстовое поле обратно в контроллер комментариев. Комментарий создается в базе данных, но столбец тела таблицы не заполняется.не может передать значение текстового поля контроллеру в рельсах 4
модель Мой продукт выглядит следующим образом -
class Product < ActiveRecord::Base
has_many :comments
accepts_nested_attributes_for :comments
end
Мой комментарий модель выглядит следующим образом -
class Comment < ActiveRecord::Base
belongs_to :product
end
Мой Комментарии контроллер выглядит приведен ниже -
class CommentsController < ApplicationController
def create
@product = Product.find(params[:product_id])
@comment = @product.comments.build(body: params[:comment_body])
@comment.user_id = session[:user_id]
@comment.product_id = params[:product_id]
if @comment.save
redirect_to selection_path(params[:product_id])
else
redirect_to selection_path(params[:product_id]), notice: "Please include a plain text comment only"
end
end
private
def comment_params
params.require(:comment).permit(comments_attributes: [ :body,:product_id ])
end
end
Маршруты приведены ниже -
get "store/prodselect/:id" => 'store#prodselect', as: :selection
resources :products do
get :who_bought, on: :member
post "comments/create" => 'comments#create', as: :create_comment
end
Я могу показать комментарии в prodselect.html.erb используя следующий код -
<% @comments.each do |comment| %>
<tr>
<td class="tbody" style="width:150px;"><%= comment.uname %>
<%= image_tag @product.user.pic.url(:thumb), :width=>50, :height=>50 %>
</td>
<td class="tbody" style="width:350px;"><%= comment.body %></td>
</tr>
<% end %>
Это место, где я не могу передать text_field значение обратно комментарии контроллера. Нижеприведенный код и код выше находятся в файле prodselect.html.erb. Также prodselect является метод в контроллере магазина -
<tr><td>
<%= text_field :comment, :body%>
<%= button_to 'Add comment' , product_create_comment_path(@product.id), :class => "buttonto" %>
</td></tr>
Наконец мой метод prodselect в магазине контроллер выглядит следующим образом -
def prodselect
@product = Product.find(params[:id])
@comments = Comment.where(product_id: params[:id])
@comment = Comment.new
end
Я новичок в RoR, поэтому любые указатели будут оценены. Я хотел бы знать, почему я не могу передать значение своего текстового поля моему контроллеру комментариев. Я также попытался использовать text_area, но безуспешно.
Спасибо заранее
Можете ли вы разместить полную форму? В вашем коде есть много вещей – Mandeep
Можете ли вы отправить 'params', которые приходят к вашему действию контроллера? вы можете найти его на сервере rails server – RAJ
HI. Это параметры передаются в журнале - «comment» => {«body» => «Great Comment»}. Как я могу получить доступ к значению в контроллере? – pari