ruby-on-rails - 没有路由匹配 { :action= >"completed", :controller= >"lifetimes", :lifetime_id=>14} 缺少必需的键:[:id]

标签 ruby-on-rails ruby model-view-controller

当用户点击复选标记时,系统会提示他输入完成挑战的日期。

<%= link_to completed_path({ lifetime_id: lifetime.id }), data: { modal: true }, class: "btn" do %>
  <span class="glyphicon glyphicon-check"></span> #Checkmark
<% end %>

既然用户完成了他的挑战,他应该通过 _completed.html.erb:deadline 更新为他完成他的lifetime 的任何日期挑战。

<%= simple_form_for(@lifetime, url: lifetime_path({ lifetime_id: @lifetime }), remote: request.xhr?, html: { data: { modal: true } }) do |f| %>

  <%= f.text_field :deadline %>

  <div class="modal-footer">
    <%= button_tag(type: 'submit', class: "btn") do %>
        Save
    <% end %>
  </div>
<% end %>

路线

get '/completed/:id', to: 'lifetimes#completed', as: 'completed'

lifetimes_controller

def completed
  @lifetime = current_user.lifetimes.find(params[:lifetime_id])
  respond_modal_with @lifetime
end

我需要修复什么才能消除此错误。我正在使用我在别处找到的代码并尝试根据我的目的进行调整,所以我并不完全理解它是如何应用的。

感谢您的帮助。

最佳答案

完成的路线需要 :id 参数,而您正在传递 :lifetime_id

要消除您正在使用 :lifetime_id 而不是 :id 在“已完成”路由中的错误,如下所示:

get '/completed/:lifetime_id', to: 'lifetimes#completed', as: 'completed'

关于ruby-on-rails - 没有路由匹配 { :action= >"completed", :controller= >"lifetimes", :lifetime_id=>14} 缺少必需的键:[:id],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34246359/

相关文章:

ruby - Ruby 有哪些代码高亮库?

c# - 使用 MVC 2 中手动定义的 SelectListItems 中的 SelectList 呈现问题

mysql - 当记录在 X 时间内未更新时通知用户

javascript - 如何为文本区域中的单词添加标题?

ruby-on-rails - 当我重命名列时,如何确保我的 View 没有在我的测试套件中使用旧名称引用该列?

ruby - 使用 Ransack 'eq' 谓词搜索空值

javascript - 将事件委托(delegate)给 Backbone 中的父 View

java - 使用 Spring Rest Controller

ruby-on-rails - 这是 Rails 验证线程安全的吗

ruby-on-rails - Mongoid 字段问题