Ошибка маршрутизации при попытке использовать одно и то же представление для обновления и создания потоков (Rails 3) - PullRequest
0 голосов
/ 13 января 2011

Мой общий пример использования:

У меня есть модель Listing , в которой много изображений .На странице сведений о списке перечислены все поля, которые могут быть обновлены встроенными (через ajax).

Я хочу иметь возможность использовать одно и то же представление для обновления списка и для создания нового списка .

Мой контроллер листинга выглядит следующим образом:

 def detail 
     @listing = Listing.find(params[:id])  
     @image = Image.new #should this link somewhere else?

     respond_to do |format| 
         format.html # show.html.erb  
         format.xml { render :xml => @listing } 
      end 
 end 


  def create
      # create a new listing and save it immediately. Assign it to guest, with a status of "draft"
      @listing = Listing.new(:price_id => 1)  # Default price id
      # save it to db
      # TODO add validation that it has to have a price ID, on record creation. So the view doesn't break.
      @listing.save
      @image = Image.new

      # redirect_to "/listings/detail/@listing.id" #this didn't work

      respond_to do |format| 
          format.html # show.html.erb  
          format.xml { render :xml => @listing } 
      end
 end 

ПРОБЛЕМА Я использую партиал, который показывает ту же форму для представления создания и представления подробностей.

Это работает отлично, за исключением одного: когда я поднимаюhttp://0.0.0.0:3000/listings/detail/7, работает отлично.

Когда я поднимаюhttp://0.0.0.0:3000/listings/new, Я получаю следующую ошибку:

Отображение /Applications/MAMP/htdocs/rails_testing/feedbackd/app/views/listings/_edit_form.html.erb где поднята строка # 100:

Не найдено ни одного маршрута {: action => «show»,: controller => «images»} Извлеченный источник (около строки # 100):

97: <!-- Form for new images -->
98: <div class="span-20 append-bottom">
99: <!-- <%# form_for :image, @image, :url => image_path, :html => { :multipart => true } do |f| %> -->
100: <%= form_for @image, :url => image_path, :html => { :multipart => true } do |f| %>
101:     <%= f.text_field :description %><br />
102:  <%= f.file_field :photo %>
103:  <%= submit_tag "Upload" %>

Я думаю, что проблема в том,: Когда я загружаю новое изображение (я использую Paperclip), для создания записи изображения требуется перечисление list_id.Так как list_id не передается с lists / new , он не может найти list_id.Как я могу пройти в удостоверение личности?Через редирект?Какой лучший способ решить это?Спасибо.

Ответы [ 3 ]

1 голос
/ 14 января 2011

Проблема в файле urways.rb.Вы не определили путь, поэтому он дает эту ошибку.Это может помочь вам

http://guides.rubyonrails.org/v2.3.8/routing.html#restful-routing-the-rails-default

1 голос
/ 13 января 2011

Кажется, проблема в том, что вы пытаетесь отправить URL-адрес, который не существует.Если вы используете форму, подобную этой:

<%= form_for @image, :html => { :multipart => true } do |f| %>

Тогда в вашем файле rout.rb должно быть:

resources :images

И у вас должен быть ImagesController с определенным действием create.Действие ImagesController # create будет вызвано при отправке этой формы.

0 голосов
/ 14 января 2011

Спасибо, все ваши комментарии были полезны.

Вот как я решил эту проблему:

Я добавил маршрут для изображений / новых , чтобы указать imageController -> Создать

<%= form_for @image, :url => "/images/new/#{@listing.id}" , :html => { :multipart => true } do |f| %>
<%= f.text_field :description %><br />
<%= f.file_field :photo %>
<%= submit_tag "Upload" %>

<% end%>

...