Я создал простую форму_For, общую как для нового, так и для обновления, в настоящее время он отлично работает для нового, но для редактирования/обновления он вызывает неправильный URL-адрес.
class NewsfeedsController < ApplicationController
before_action :find_post, only: [:show, :destroy, :edit, :update]
def index
@posts = Post.all.order("created_at DESC")
end
def show
# before_action is taking care of all 4 i.e(sho,edit,update and destroy)..Keeping it DRY
end
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
if @post.save
redirect_to root_path
else
render 'new'
end
end
def edit
end
def update
if @post.update(post_params)
redirect_to newsfeed_path(@post)
else
render 'edit'
end
end
def destroy
end
private
def post_params
params.require(:post).permit(:content)
end
def find_post
@post = Post.find(params[:id])
end
end
В форме.html
<%= simple_form_for @post, url: newsfeeds_path(@post) do |f| %>
<%= f.input :content,label: false, placeholder: "write your post here..." %>
<%= f.button :submit %>
<% end %>
при проверке элемента в браузере я получаю неправильное действие,
это должно быть action="/newsfeeds/7"
Пожалуйста, направляйте
POST newsfeeds_url
, потомPATCH newsfeed_url(@post)
. - person spickermann   schedule 05.01.2019