2016-04-06 5 views
0

Bu formu gönderdiğimde yeni bir kayıt yapılmış, ancak değerler eklenmiyor. Birkaç farklı şeyler denedim ama hiçbir şeyform_for yeni bir kayıt oluşturuyor ancak değerler boş

çalışıyor

comments kontrolör

def report 

    @report_comment = ReportComment.new 
    if @report_comment.save(report_comment_params) 

     redirect_to root_path 
    else 
     render 'static_pages/home' 
    end 
    end 

private 
    def report_comment_params 
    params.require(:report_comment).permit(:guide_id, :submitted_by, :comment_id) 

geçirilen parametreleri içeren

comments görünümü (sadece raporu formu)

<% @report_comment = ReportComment.new %> 
<% @guide = Guide.friendly.find(params[:guide_id]) %> 
<% if current_user.nil? %> 
<% user_id = 0 %> 
<% else %> 
<% user_id = current_user.id %> 
<% end %> 
      <%= form_for([@report_comment], url: comments_report_path, method: :post) do |f| %> 
     <%= f.hidden_field :guide_id, value: @guide.id %> 
     <%= f.hidden_field :submitted_by, value: user_id %> 
     <%= f.hidden_field :comment_id, value: comment.id %> 

     <%= f.submit "Report" %> 

    <% end %> 

günlük

Parameters: {"utf8"=>"✓", "authenticity_token"=>"0XMjwzMlMLSwqpImXpjTRWd8yHUP/ERTkvnzd9rWIkSA94l9f9bCQdODXrC3SyvmfJjuW/N3zkp5pVZAf+0D+w==", "report_comment"=>{"guide_id"=>"1", "user_id"=>"1", "comment_id"=>"1"}, "commit"=>"Report"} 

Değerlerin neden kaydedilmediğinden emin değil misiniz? Alternatif olarak 'u if @report_comment.save(report_comment_params) altına ekleyebilirim, ancak bu ideal değildir ve sadece form gönderiminden doğrudan tasarruf etmelerini sağlamak kadar iyi değildir. Daha sonra yeni yöntem ve yeni

@report_comment = ReportComment.new(report_comment_params) 
if @report_comment.save 

    redirect_to root_path 
else 
    render 'static_pages/home' 
end 
+1

'@report_comment = ReportComment.new (report_comment_params)' çözecektir kaydedebilirsiniz. –

cevap

1

atama params için

+0

Teşekkürler. Bunu milyonlarca kez yaptım, ama biraz haha ​​için biraz gecikti. Meydan okurcasına biraz uyumak lazım – Rob

0

Geçiş parametreler kaydetmek o

def report 
    @report_comment = ReportComment.new(report_comment_params) 
    if @report_comment.save 
    redirect_to root_path 
    else 
    render 'static_pages/home' 
    end 
end 
0

Sen kontrolör, sen .save yılında ReportComment.new değil parametreyi geçmelidir yanlıştır:

def report 

    @report_comment = ReportComment.new(report_comment_params) 
    if @report_comment.save 
    redirect_to root_path 
    else 
    render 'static_pages/home' 
    end 
end 

Ve modunuza doğrulamaları eklerseniz çok daha iyi El.

1

Params değerini .new Instantiate yöntemine geçirin. Sen yöntemini

def report 
    @report_comment = ReportComment.new(report_comment_params) 
    if @report_comment.save 
    redirect_to root_path 
    else 
    render 'static_pages/home' 
    end 
end 

kurtarmak için params geçemez veya kullanıcı yöntemini oluşturmak yerine

def report 
    @report_comment = ReportComment.create(report_comment_params) 
    if @report_comment.present? 
    redirect_to root_path 
    else 
    render 'static_pages/home' 
    end 
end