【问题标题】:patch method in ruby sinatraruby sinatra 中的补丁方法
【发布时间】:2018-08-09 05:24:01
【问题描述】:

我正在使用 sinatra 和 activerecord 编写一个网络应用程序,但我无法弄清楚我的代码有什么问题......如果你能检查它并指导我完成它会很棒!所有模型都是已链接,但我无法将有关某些书籍的信息更新到数据库中..

红宝石辛纳特拉代码:

     get '/info/:isbn/edit' do
        @book = Book.find_by(isbn: params[:isbn])
        erb :edit
     end

 patch '/info/:isbn' do
     book = Book.find_by(isbn: params[:isbn])
     book.title = params[:title]
     book.page_count = params[:number_pages]
     book.category = params[:category]
     book.save
     redirect to "/info/#{ params[:isbn] }"
   end

ERB 页面

   <form action="/info/<%= @book_isbn%>/edit" method="post">

   <input type="hidden" value="patch" name="_method">
   <label for="">Title</label>
   <input type="text" name="title" value="<%= @book_title %>">
</form>

and this is the error page...

【问题讨论】:

    标签: ruby sinatra-activerecord


    【解决方案1】:

    您将表单发送到错误的 URL:

    <form action="/info/<%= @book_isbn%>/edit" method="post">
    

    网址应该是/info/&lt;%= @book_isbn%&gt;

    【讨论】:

    • 谢谢你……但它一直给我同样的错误,只是现在它用实际数字代替 :isbn ……奇怪的是:即使我试图指定另一条路径,假设“get '/info/edit/:isbn' do”(也为补丁更改它)来自服务器的答案将是“sinatra 不知道这个小曲试试这个:get '/info/3821284293/编辑'做“..但我的道路不同!!!!尝试重新启动服务器..但没有.. @Uzbekjon
    【解决方案2】:

    检查以确保您的控制器将 :method_override 设置为 true。

    set :method_override, true
    

    没有它,Sinatra 将不知道如何处理 input type="hidden" value="patch" name="_method"

    【讨论】:

      猜你喜欢
      • 2011-04-22
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 2017-01-31
      • 2011-07-26
      • 2023-04-10
      • 1970-01-01
      • 2012-08-19
      相关资源
      最近更新 更多