2014-08-28 154 views
0

我正在嘗試爲產品創建註釋。不知何故,我無法將text_field中的值傳遞迴評論控制器。註釋在數據庫中創建,但表格的正文列未填充。無法將文本字段值傳遞給控制器​​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 

我是新來的回報率,因此任何指針將不勝感激。我想知道爲什麼我無法將我的文本字段值傳遞給我的評論控制器。我試過使用text_area也失敗了。

由於提前

+0

你能發佈你的完整表單嗎?你的代碼中有很多東西搞砸了 – Mandeep 2014-08-28 14:12:17

+0

你可以發佈一些來自你的控制器動作的參數嗎?你可以在rails服務器端找到它 – RAJ 2014-08-28 14:16:03

+0

嗨,這是在日誌中傳遞的參數 - 「comment」=> {「body」=>「Great Comment」}。我如何訪問控制器中的值? – pari 2014-08-28 22:54:16

回答

0

button_to本身只是張貼到URL創建一個表單(我承認我已經解釋說很差,去看看鏈接的文檔),那麼你的文本字段是不實際上是表格的一部分,因此沒有通過。你將需要使用一個實際的形式

<tr> 
    <td> 
    <%= form_for [@product, Comment.new] do |f| %> 
     <%= f.text_field :body %> 
     <%= f.submit 'Add comment', :class => "buttonto" %> 
    <% end %> 
    </td> 
</tr> 
+0

嗨,我嘗試在部分中使用form_for時收到錯誤消息。該消息是「Store#prodselect中的NoMethodError」。顯示E:/demo/app/views/store/_form.html.erb其中第1行出現: 未定義的方法'product_comments_path'爲#<#:0x4d1dc98> – pari 2014-08-28 22:26:06

+0

'<%= form_for [@product ,Comment.new],url:create_comment_product_path do | f | %>'我假設看看你的路線,如果不是耙路線,看看你的評論創建的路徑是什麼,並在url選項中使用它。 – 2014-08-29 08:05:03

0

你使用form_for或類似的東西?只有路徑的button_to不會將信息發送到您的控制器。嘗試閱讀this

0

是的,我在路線中的路徑不正確。也form_for幫助。謝謝你指點我正確的方向。

相關問題