Не удается найти идентификатор списка для сохраненной записи RSS

Я создаю RSS-канал, используя гем Feedjirra с возможностью сохранения записей канала в список. Когда я пытаюсь отредактировать сохраненные записи, чтобы добавить теги или удалить запись, я получаю сообщение об ошибке, что не может найти идентификатор списка, даже если я использую глобальную переменную списка.

Я не вложил свои сохраненные записи, поэтому у меня также может быть ошибка маршрутизации. Я также настроил возможность вручную вводить ссылки на страницу списков и размещать их под отдельным контроллером. Я могу редактировать и удалять ссылки, которые я ввел вручную, но не из ленты.

Прежде всего, ошибка:

Started GET "/entries/9/edit" for 127.0.0.1 at 2015-10-19 20:58:40 -0700
Processing by EntriesController#edit as HTML
Parameters: {"id"=>"9"}
Completed 404 Not Found in 1ms

 ActiveRecord::RecordNotFound (Couldn't find List without an ID):
app/controllers/entries_controller.rb:22:in `edit'

Вот страница ленты, где я сохраняю записи:

<% @feeds.each do |feed| %>
      <p class="feed_url">
        <%= link_to feed.url, feed %>
        <%= link_to "Edit", edit_feed_path(feed), class: "blue" %> 
        <%= link_to "Delete", feed_path(feed), method: :delete, data: { confirm: 'Are you sure you want to delete this feed url?' }, class: "blue" %>
      </p>

      <div class="entry_wrapper">
        <div class="entry_box">
          <% feed.entries.each do |entry| %>
            <p class="entry_title"><%= sanitize link_to entry.title, entry.url %></p>


            <div class="select_tag">
              <%= form_tag entries_path do %>
                <%= hidden_field_tag :url, entry.url %>
                <%= select_tag :list, options_from_collection_for_select(@lists, :id, :name) %>
                <%= submit_tag "Add To List", class: "btn" %>
              <% end %>
            </div>

              <p class="entry_info">
                <%= sanitize get_info(entry), length: 30 %>
              </p>


      <% end %>

Вот контроллер сохраненных записей из ленты:

def index
 if params[:tag]
  @saved_entries = SavedEntry.tagged_with(params[:tag])
  @tag = params[:tag].capitalize
else
  @saved_entries = SavedEntry.all
end
  authorize @items
end

def create
  @list = List.find(params[:list])
  @saved_entry = SavedEntry.new_with_preview(url: params[:url])
  @saved_entry.list = @list
  @saved_entry.save
  redirect_to request.referer
end

def edit
  @list = List.find(params[:list_id])
  @saved_entry = SavedEntry.find(params[:id])
end

def update
  @saved_entry = SavedEntry.find(params[:id])

  if @saved_entry.update_attributes(url: params[:url])
    flash[:notice] = "You have updated the entry."
    redirect_to @list
  else
    flash[:notice] = "There was an error. Please try again."
    render :edit
  end
end

 def destroy
  @list = List.find(params[:list_id])
  @saved_entry = SavedEntry.find(params[:id])
end

Вот страница со списком:

<% @saved_entries.each do |entry| %>
<div class="list_box">
  <div class="list_image"><%= image_tag(entry.image_url) %></div>
  <p>
    <%= link_to entry.url, entry.url, target: "_blank" %><br />
    <br />
    <p>
        Tags: <%= raw entry.tag_list.map { |t| link_to t, tag_path(t) }.join(', ') %>
    </p>
    <% if current_user %>
      <div class="list_edit_delete">
        <small><%= link_to "Edit", edit_entry_path(entry) %></small>
        <small><%= link_to "Delete", entry_path(entry), method: :delete %></small>
      </div>
    <% end %>

И сохраненные_записи edit.html.erb

<div class="lists">

  <%= form_for [@list, @saved_entry] do |f| %>
    <%= f.label :url, "URL", class: "" %>
   <%= f.text_field :url, class: "" %><br />

    <%= f.submit "Save", class: "d_button" %>
  <% end %>

</div>

Если кто-то может понять это, это будет очень признательно.


person fancy_daniel    schedule 20.10.2015    source источник


Ответы (1)


@list = List.find(params[:list_id])

params[:list_id] должно быть неопределенным, то есть nil, что вызывает эту ошибку. Я не вижу, чтобы вы передавали это.

<small><%= link_to "Edit", edit_entry_path(entry) %></small>
person katafrakt    schedule 20.10.2015
comment
Я вижу, что ты говоришь. Однако я добавил @list к своим ссылкам, и он все еще не может найти идентификатор. Я сделал это следующим образом: ‹small›‹%= link_to Edit, edit_entry_path(@list, entry) %›‹/small› - person fancy_daniel; 21.10.2015
comment
А вы уверены, что список определен? Может попробовать edit_entry_path(entry, list_id: @list.id). - person katafrakt; 21.10.2015
comment
Ладно, ты завел меня чертовски далеко. Спасибо. Поэтому, назвав это так, как вы предложили, я на самом деле привел меня к другой ошибке. На моей странице редактирования фида произошла ошибка маршрутизации. Оказывается, у меня были маршруты для введенных вручную ссылок, но не для ссылок, сохраненных из ленты новостей. Огромная помощь. Спасибо. - person fancy_daniel; 27.10.2015