0

ネストされた属性を持つフォームを保存する際に問題が発生しています。私はSubmissionTagという2つのモデルで作業しています。各Submissionhas_one :tagフォームの保存時に予期しないロールバックが発生する

私がいる問題は、私がフォームを送信するとき、私は「ロールバック」を取得していますし、データが保存されていないということです。

Processing by SubmissionsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"XSGZaJ1nR2MbkJJZS/Ftkb9jefb9FLOAJPA1nYbG/AIrVJYb93DtPxc7fzhUFt9uSnzzcNGqkMTSz/jFsFejHA==", "submission"=>{"domain"=>"test", "tag_attributes"=>{"tag_text"=>"Junk Science", "notes"=>"test"}}, "commit"=>"Submit"} 
    (0.1ms) BEGIN 
    (0.1ms) ROLLBACK 
    Rendering submissions/new.html.erb within layouts/application 
    Rendered submissions/_form.html.erb (10.6ms) 
    Rendered submissions/new.html.erb within layouts/application (11.8ms) 
    Rendered shared/_navbar.html.erb (2.7ms) 
Completed 200 OK in 2276ms (Views: 2269.6ms | ActiveRecord: 0.2ms) 

次のように私のコントローラである:

任意の提案のための

<%= simple_form_for @submission, defaults: { wrapper_html: {class: 'form-group'}, input_html: { class: "form-control" }} do |f| %> 

    <%= f.input :domain, required: true, input_html: {class: "form-control"}%> 
    <%= f.simple_fields_for :tag do |tag| %> 
     <%= tag.input :tag_text, collection: source_type %> 
     <%= tag.input :notes %> 
    <% end %> 

    <%= f.submit "Submit", class: 'btn btn-primary'%> 
<% end %> 

感謝を次のように

def new 
    @submission = Submission.new 
    @tag = @submission.build_tag 
    end 

    def create 
    @submission = Submission.new(submission_params) 

    if @submission.save 
     redirect_to root_path, notice: "Thank you for your submission." 
    else 
     render 'new' 
    end 
    end 

    private 

    def submission_params 
    params.require(:submission).permit(:subtitle, :domain, :type1, :type2, :type3, :website_type, :user_id, :notes, tag_attributes:[:tag_text, :notes]) 
    end 
と私のフォームがあります。アップデート1

次のようにlogger.debug @submission.errors.inspectの出力は次のようになります。

#<ActiveModel::Errors:0x007ff49e5f8e90 @base=#<Submission id: nil, domain: "test", type1: nil, type2: nil, type3: nil, website_type: nil, user_id: nil, notes: nil, created_at:  nil, updated_at: nil>, @messages={:"tag.submission"=>["must exist"]}, @details={"tag.submission"=>[{:error=>:blank}]}> 

submission下の空白のフィールドの良い取引がありますが、それは、私は、ネストされたを追加してみてくださいまでフィットを投げて起動しません。属性。

アップデート2:次のように マイTagモデルは次のとおりです。次のように

class Tag < ApplicationRecord 
    belongs_to :submission 
end 

Submissionモデルは次のとおりです。最終的に

class Submission < ApplicationRecord 
    has_one :tag 
    accepts_nested_attributes_for :tag 
end 
+2

フォームを送信した後に '@ submission.errors.inspect'がビューで返されるのは何ですか? –

+2

ええ - 私の提案は似ています。 'defs create'の' new '行を 'render'の直前に' puts @ submission.errors.inspect'を追加し、コンソールウィンドウを見て出力内容を確認します。何かが明らかに提出が保存されるのを止めています - それはたぶん検証エラーです。 –

+0

@ZachTaylorの質問がこの情報で更新されました – neanderslob

答えて

0

、私はちょうどRails4とすべてに、レールのバージョンを元に戻します。働いた。

関連する問題