0

has_many 仕事を持つ profile というモデルがあります。ユーザーがプロファイルを作成できるようにするために繭の宝石を使用し、別のページで好きなだけジョブを作成しています。プロフィールフォームは正常に機能しています。ただし、ジョブフォームは実際にジョブを作成しているようには見えません。ユーザーは求人フォームに入力する前にプロファイル フォームに入力する必要があるため、ジョブ フォームに到達するまでに、作成ではなくプロファイル コントローラーの更新アクションに自動的に移動します。問題はプロファイルコントローラーにあると確信しています。プロファイルコントローラーは次のとおりです。

def new
    if current_user.profile
        redirect_to edit_profile_path(current_user.profile_name)
    else
        @profile = Profile.new
    end
end


def create
    @profile = current_user.build_profile(profile_params)
    @profile.save
    if current_user.profile.invalid?
        render :new, :status => :unprocessable_entity
    else
        redirect_to profile_path(current_user.profile_name)
    end
end

def edit
    @profile = current_user.profile
end


def update
    #if current_user.profile.jobs.any?
        @profile_save = current_user.profile.update_attributes(profile_params)

        if current_user.profile.invalid?
            @profile = current_user.profile
            render :edit, :status => :unprocessable_entity
        else
            redirect_to profile_path(current_user.profile_name)
        end
end

private
def profile_params
      params.fetch(:profile, {}).permit(:title, 
            :category, :description, :state, :zip_code, :rate,
            jobs_attributes: [:firm, :position, :category, :description,
            :begin, :end, :_destroy])
end

require の代わりに fetch を使用します。そうしないと、プロファイルが見つからないというエラーを受け取ったからです。フォームは次のとおりです。

<%= simple_form_for @profile do |f| %>
  <h3> Jobs </h3>
    <%= f.simple_fields_for :jobs do |job| %>
     <%= render 'job_fields', :f => job %>
       <% end %>
     <%= link_to_add_association 'add job', f, :jobs %>
  <%= f.submit %>
<% end %>

そして、ここに job_fields パーシャルがあります:

.nested-fields
 <%= f.input :firm, label: "Firm" %> <br>
  <%= f.input :position, label: "Position" %> <br>
  <%= f.input :category, label: "Category"%><br>
  <%= f.input :begin, label: "Beginning", collection: 1960..2013 %><br>
  <%= f.input :end, label: "End", collection: 1960..2013 %>
  <%= f.input :description, label: "Description"%><br>

  <%= link_to_remove_association "remove task", f %>

問題は、私が HAML から ERB に変換したことである可能性もあり、それを間違って行ったと思います。

また、すべてのプロファイルは実際にはユーザーに属していますが、違いがあるとは思いません。助けてくれてありがとう!

4

1 に答える 1

0

create問題が のメソッドを呼び出すことである場合は、メソッドJobsを明示的に使用するようにフォームを変更する必要がありますpost。何かのようなもの:

<%= simple_form_for @profile, :url => new_jobs_path, :method => :post do |f| %>
  <h3> Jobs </h3>
    <%= f.simple_fields_for :jobs do |job| %>
     <%= render 'job_fields', :f => job %>
       <% end %>
     <%= link_to_add_association 'add job', f, :jobs %>
  <%= f.submit %>
<% end %>
于 2013-11-03T02:31:13.393 に答える