2

私はレールに慣れていないので、おそらくこれを何らかの形で台無しにしています(明らかに)。ajax経由で送信をコントローラに送り返すフォームがあります。データはそこに到達し、データベースに入ります。目標は、送信が成功すると、データが html 形式で返され、ページを更新せずにページの先頭に追加できるようにすることです。

これが私のコントローラーです:

# POST /projects
# POST /projects.json
  def create
   @project = Project.new(params[:project])
   @project.user_id = current_user.id

    respond_to do |format|
      if @project.save
        #format.html { redirect_to @project, notice: 'Project was successfully created.' }
        #format.json { render json: @project, status: :created, location: @project }
        render :partial => "projects/project", :locals => { :project => @project }
    else
       format.html { render action: "new" }
       format.json { render json: @project.errors, status: :unprocessable_entity }
    end
  end
end

私の ajax 関数は次のようになります。

$('#new_project').submit(function(){

    $.ajax({
        type: 'post',
        beforeSend: setHeader,
        url:'/projects',
        dataType: 'json',
        data: $('#new_project').serialize(),
        success: function(json) {
            console.log(json);
            parent.jQuery('#cboxClose').click();
        }
    });

    return false;

});

最後に、私のパーシャルです。パーシャルはループの一部です。ループはうまく機能し、問題はありません。ループは次のようになります。

  <% @projects.each do |project| %>

      <%= render :partial => "project", :object  => project %>

  <% end %>

パーシャルは次のようになります。

<section class="project">

  <p class="name"><span>Name: </span> <%= project.name %></p>
  <p class="title"><span>Title: </span><%= project.title %></p>
  <p class="title"><span>User ID: </span><%= project.user_id %></p>
  <article>
    <span>Details:</span> <%= project.details %>
  </article>
  <article>
    <p>Meta:</p>
    <%= link_to 'Show', project %>
    <%= link_to 'Edit', edit_project_path(project), :data => { :colorbox => true,:colorbox_height => '500px', :colorbox_width => '500px', :colorbox_iframe => true } %>
    <%= link_to 'Destroy', project, method: :delete, data: { confirm: 'Are you sure?' } %>
  </article>

</section>

それだけです。私は正しい軌道に乗っていると思っていましたが、406 エラーが原因でループに陥っています。

4

1 に答える 1