Rails 3.1 - Не могу редактировать и создавать на тех же частично вложенных ресурсах - PullRequest
1 голос
/ 20 декабря 2011

У меня есть раздел администратора и внутри администратора, Финалист и Изображения.Я использую, ruby ​​1.8.7-p249 и Rails 3.1.2

# model image.rb
class Admin::Image < ActiveRecord::Base
    belongs_to :finalist
    ...
end

# model finalist.rb
class Admin::Image < ActiveRecord::Base
    has_many :images
    ...
end

Мой ImagesController:

def new
  @admin_finalist = Admin::Finalist.find(params[:finalist_id])
  @admin_image = @admin_finalist.images.build

  respond_to do |format|
    format.html # new.html.erb
    format.json { render :json => @admin_image }
  end
end

def edit
  @admin_finalist = Admin::Finalist.find(params[:finalist_id])
  @admin_image = @admin_finalist.images.find(params[:id])
end

def create
  @admin_finalist = Admin::Finalist.find(params[:finalist_id])
  @admin_image = @admin_finalist.images.new(params[:admin_image])

  respond_to do |format|
    if @admin_image.save
      format.html { redirect_to admin_finalist_images_path(@admin_finalist) }
      format.json { render :json => @admin_image, :status => :created, :location => @admin_image }
    else
      format.html { render :action => "new" }
      format.json { render :json => @admin_image.errors, :status => :unprocessable_entity }
    end
  end
end

def update
  @admin_finalist = Admin::Finalist.find(params[:finalist_id])
  @admin_image = @admin_finalist.images.find(params[:id])

  respond_to do |format|
    if @admin_image.update_attributes(params[:admin_image])
      format.html { redirect_to admin_finalist_images_path(@admin_finalist) }
      format.json { head :ok }
    else
      format.html { render :action => "edit" }
      format.json { render :json => @admin_image.errors, :status => :unprocessable_entity }
    end
  end
end

И мои изображения _form.html.erb:

<%= form_for([@admin_finalist, @admin_image]) do |f| %>
    <% if @admin_image.errors.any? %>
    <div id="error_explanation">
        <h2><%= pluralize(@admin_image.errors.count, "error") %> prohibited this admin_image from being saved:</h2>

        <ul>
            <% @admin_image.errors.full_messages.each do |msg| %>
            <li><%= msg %></li>
            <% end %>
        </ul>
    </div>
    <% end %>

    <div class="field">
        <%= f.label :file %>
        <%= f.file_field :file %>
    </div>
    <%- unless @admin_image.new_record? || !@admin_image.file? -%>
    <div class="field">
        <%= f.label :remove_file, "Remover?" %>
        <%= f.check_box :remove_file %>
    </div>
    <%- end -%>
    <div class="field">
        <%= f.label :url %>
        <%= f.text_field :url, :placeholder => "http://" %>
    </div>
    <div class="field">
        <%= f.label :title %>
        <%= f.text_field :title %>
    </div>
    <div class="actions">
        <%= image_submit_tag("button/save.png") %>
        <%= link_to image_tag("button/back.png"), admin_finalist_images_path %>
    </div>
<% end %>

Все кажется идеальным, но я получаю эту ошибку, когда пытаюсь добавить изображение в финалист в admin / finalists / 1 / images / new .

Showing .../app/views/admin/images/_form.html.erb where line #5 raised:

undefined method `admin_finalist_admin_images_path' for #<#<Class:0x102da0068>:0x102d9a870>

Итак, япопытался сказать рельсам использовать определенный URL:

<%= form_for([@admin_finalist, @admin_image], :url => admin_finalist_image_path(@admin_finalist.id, @admin_image)) do |f| %>

К сожалению, эта работа только для редактирования.Когда я пытаюсь редактировать, я получаю это сообщение об ошибке:

No route matches {:controller=>"admin/images", :finalist_id=>1, :id=>nil, :action=>"show"}

И если я хочу создать, мне нужно сделать:

<%= form_for([@admin_finalist, @admin_image], :url => admin_finalist_images_path) do |f| %>

И если я пытаюсь редактировать, я получаю это сообщение:

No route matches [PUT] "/admin/finalists/1/images"

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

РЕДАКТИРОВАТЬ

Проблема былачто мои модели были в пространстве имен.Итак, я переписал все приложение, чтобы исправить это, и оно работает нормально.

[] `s

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...