0

ブラウザでアクセスするとpublish、既存のものに追加されたというコントローラーがあります。posts_controller.rbhttp://localhost:3000/posts/15/publishMissing required Parameter:post

何が欠けているのかわかりません。誰かがパズルの欠けているピースを指摘できますか? 前もって感謝します

posts_controller.rb

  # PUBLISH /post/1/publish
  def publish
     @post = Post.find(params[:id])
     @post.publish = true
     @post.published_at = Time.now.utc
     respond_to do |format|
       if @post.update_attributes(post_params)
         format.html 
       else
         format.html { redirect_to posts_url, notice: 'Something went wrong. Try again.' }
       #  format.json { render json: @post.errors, status: :unprocessable_entity }
       end
     end   
  end

publish.html.erb

  <h1>PUBLISHED POST</h1>

ルート.rb

  match 'posts/:id/publish' => 'posts#publish' , :as => :publish
  match 'posts/:id/unpublish' => 'posts#unpublish', :as => :unpublish
  resources :posts

私は strong_parameters を使用しています & これは、posts_controller.rb で明示的に定義された許可されたパラメーターです

 def post_params
      params.require(:post).permit(:id, :rental_type, :rent_amt, :street_address, :city, :state, :description, :pet_friendly, :duration, :occupancy, :zip, {:roommate_preference => []}, :latitude, :longitude, :start_date, :publish, :published_at, :user_id)
    end

ログ:

Started GET "/posts/15/publish" for 127.0.0.1 at 2013-05-19 02:07:29 -0700
Creating scope :page. Overwriting existing method Post.page.
Processing by PostsController#publish as HTML
  Parameters: {"id"=>"15"}
  Post Load (15.2ms)  SELECT "posts".* FROM "posts" WHERE "posts"."id" = $1 LIMIT 1  [["id", "15"]]
  Rendered text template (0.0ms)
Completed 400 Bad Request in 603ms (Views: 62.5ms | ActiveRecord: 382.7ms)
4

1 に答える 1