【问题标题】:Delete Button Not Working - Not Sure What is Wrong删除按钮不起作用 - 不知道出了什么问题
【发布时间】:2016-11-05 22:10:58
【问题描述】:

所有,

我试过了:

            <h9>Thursday</h9>
            <% @thursday.each do |chorelist| %><br>
                <p2><%= chorelist.name %></p2>
                <%= button_to "delete", chorelists_destroy_path(:id, chorelist.id) %>
            <% end %>

但是,它不会成功。

如您所见,我尝试在每次迭代中添加一个删除按钮。我在这里错过了什么?

我还是 Rails 的新手,所以任何帮助都将不胜感激。

附录:我在使用后一种方法时收到此错误消息:

“找不到 'id'={:name=>"Sweep Floors", :day=>"Sunday", :user_id=>2} 的 Chorelist"

我检查了控制台,这些参数都在那里。

  class SaveListController < ApplicationController

  before_filter :authenticate_user!

  def index
  @chorelist = Chorelist.create(user_id: params[:user_id], chore_id:     params[:chore_id], day: params[:day], name: params[:chore_name])

redirect_to pick_chores_path

end


def display
@chorelist = Chorelist.all

@monday = @chorelist.where("day = 'Monday'", user_id: current_user.id)
@tuesday = @chorelist.where("day = 'Tuesday'", user_id: current_user.id)
@wednesday = @chorelist.where("day = 'Wednesday'", user_id: current_user.id)
@thursday = @chorelist.where("day = 'Thursday'", user_id: current_user.id)
@friday = @chorelist.where("day = 'Friday'", user_id: current_user.id)
@saturday = @chorelist.where("day = 'Saturday'", user_id: current_user.id)
@sunday = @chorelist.where("day = 'Sunday'", user_id: current_user.id)

  end

 def destroy
 @chorelist = Chorelist.find(id: params[:id])
 @chorelist.destroy

redirect_to show_chores_path

end

end

Rails.application.routes.draw 做

资源 :chorelists

得到'关于' => 'welcome#about'

get 'contact' => 'welcome#contact'

root 'welcome#index'

得到'关于' => 'welcome#about'

get 'pick_chores' => 'pick_chores#index'

发布'save_list' => 'save_list#index'

get 'show_chores' => 'save_list#display'

发布 'chorelists_destroy' => 'save_list#destroy'

资源:家务 devise_for :用户

结束

【问题讨论】:

  • 你能给我看看你的rails routes/rake routes 输出用于删除/销毁合唱团吗?

标签: ruby-on-rails


【解决方案1】:

:id, chorelist.id 更改为id: chorelist.id

<h9>Thursday</h9>
<% @thursday.each do |chorelist| %><br>
    <p2><%= chorelist.name %></p2>
    <%= button_to "delete", chorelists_destroy_path(id: chorelist.id) %>
<% end %>

在控制器上

def destroy
    @chorelist = Chorelist.find(params[:id])
    @chorelist.destroy
    # do your things
end

【讨论】:

  • 做到了。逗号正在做所有这些?
  • 为了将参数放在路径帮助器上,我们使用哈希,所以当你按自己的方式放置 :id, chorelist.id 时,它会向你的控制器发送两个未命名的参数。而id: chorelist.id 将发送 1 个参数,其键为 id,值为 chorelist.id
  • 知道了。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-29
  • 2014-11-19
相关资源
最近更新 更多