Simple_form_for 在 rails 中编辑时操作错误 URL
Simple_form_for action hitting wrong URL on edit in rails
我已经为新的和更新创建了一个 simple_form_For 通用的,
目前,它对新的工作正常,但对于 edit/update,它调用了错误的 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
在Form.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"
请指导
更新操作应该是 newsfeed_path(@post)
而不是 newsfeeds_path(@post)
。请更正后重试!
<%= simple_form_for @post, url: newsfeed_path(@post) do |f| %>
希望对您有所帮助!
由于新建和更新使用的是common _form,需要在url中分别添加条件,
<%= simple_form_for @post, url:(@post.new_record? ? newsfeeds_path : newsfeed_path(@post)) do |f| %>
这将帮助您同时使用新方法和更新方法。
希望这会有所帮助。
我已经为新的和更新创建了一个 simple_form_For 通用的, 目前,它对新的工作正常,但对于 edit/update,它调用了错误的 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
在Form.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"
请指导
更新操作应该是 newsfeed_path(@post)
而不是 newsfeeds_path(@post)
。请更正后重试!
<%= simple_form_for @post, url: newsfeed_path(@post) do |f| %>
希望对您有所帮助!
由于新建和更新使用的是common _form,需要在url中分别添加条件,
<%= simple_form_for @post, url:(@post.new_record? ? newsfeeds_path : newsfeed_path(@post)) do |f| %>
这将帮助您同时使用新方法和更新方法。 希望这会有所帮助。