我正在尝试使用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
model user.rb
def feed
Post.where("user_id = ?", id)
end
答案 0 :(得分:0)
在_feed.html.erb中,您使用的是嵌套表单(表单标记中的表单标记),因此不会生成以erb编写的内部表单。 而且我不明白为什么你在@post上使用form_for。 这是我的解决方案。
_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 %>