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 %>