2015-10-20 7 views
0

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

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

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

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

И saved_entries 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> 

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

ответ

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

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

<small><%= link_to "Edit", edit_entry_path(entry) %></small> 
+0

Я вижу, что вы говорите. Тем не менее, я добавил @list в мои ссылки, и он по-прежнему не может найти идентификатор. Я сделал это следующим образом: <% = link_to «Изменить», edit_entry_path (@list, entry)%>

+0

И вы уверены, что этот список определен? Возможно, попробуйте 'edit_entry_path (запись, list_id: @ list.id)'. – katafrakt

+0

Хорошо, ты добрался до меня. Спасибо. Так называя это так, как вы предложили, на самом деле привело меня к другой ошибке. На странице редактирования фида была ошибка маршрутизации. Оказывается, у меня были маршруты для введенных вручную ссылок, но не для ссылок, сохраненных в ленте новостей. Огромная помощь. Спасибо. –