ruby rails 自定义操作 form_for
ruby on rails custom action for form_for
我正在尝试使用 form_for 进行自定义操作。我现在的代码不会导致任何错误,它只是什么都不做。我已经坚持了一段时间,任何帮助都会很棒:)
routes.rb
resources :posts do
member do
patch :confirm
end
end
_feed.html.erb
<% if @feed.any? %>
<% @feed.each do |feed| %>
<span class="props_form">
<form class="form-inline">
<%= form_for @post, url: confirm_post_path(feed), method: :patch do |f| %>
<div class="form-group">
# form fields
<div class="form-group">
<%= f.submit "Confirm", class: "btn-primary btn-xs form-control" %>
</div>
<% end %>
</form>
</span>
posts_controller.rb
def confirm
@post = Post.find_by(id: params[:id])
@post.toggle!(:confirm)
@post.save
redirect_to root_url
end
pages_controller.rb
def home
if logged_in?
@feed = current_user.feed.paginate(page: params[:page])
end
end
型号user.rb
def feed
Post.where("user_id = ?", id)
end
在 _feed.html.erb 中,您使用的是嵌套表单(表单标签中的表单标签),因此不会生成用 erb 编写的内部表单。
我不明白你为什么要将 form_for 与 @post 一起使用。
这是我的解决方案。
_feed.html.erb
<% if @feed.any? %>
<% @feed.each do |feed| %>
<span class="props_form">
<%= form_tag confirm_post_path(feed), class: 'form-inline', method: :patch do |f| %>
<div class="form-group">
# form fields
<div class="form-group">
<%= submit_tag "Confirm", class: "btn-primary btn-xs form-control" %>
</div>
<% end %>
</span>
<% end %>
<% end %>
我正在尝试使用 form_for 进行自定义操作。我现在的代码不会导致任何错误,它只是什么都不做。我已经坚持了一段时间,任何帮助都会很棒:)
routes.rb
resources :posts do
member do
patch :confirm
end
end
_feed.html.erb
<% if @feed.any? %>
<% @feed.each do |feed| %>
<span class="props_form">
<form class="form-inline">
<%= form_for @post, url: confirm_post_path(feed), method: :patch do |f| %>
<div class="form-group">
# form fields
<div class="form-group">
<%= f.submit "Confirm", class: "btn-primary btn-xs form-control" %>
</div>
<% end %>
</form>
</span>
posts_controller.rb
def confirm
@post = Post.find_by(id: params[:id])
@post.toggle!(:confirm)
@post.save
redirect_to root_url
end
pages_controller.rb
def home
if logged_in?
@feed = current_user.feed.paginate(page: params[:page])
end
end
型号user.rb
def feed
Post.where("user_id = ?", id)
end
在 _feed.html.erb 中,您使用的是嵌套表单(表单标签中的表单标签),因此不会生成用 erb 编写的内部表单。 我不明白你为什么要将 form_for 与 @post 一起使用。 这是我的解决方案。
_feed.html.erb
<% if @feed.any? %>
<% @feed.each do |feed| %>
<span class="props_form">
<%= form_tag confirm_post_path(feed), class: 'form-inline', method: :patch do |f| %>
<div class="form-group">
# form fields
<div class="form-group">
<%= submit_tag "Confirm", class: "btn-primary btn-xs form-control" %>
</div>
<% end %>
</span>
<% end %>
<% end %>