ブラウザでアクセスするとpublish
、既存のものに追加されたというコントローラーがあります。posts_controller.rb
http://localhost:3000/posts/15/publish
Missing 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)