Я работаю над очень простым проектом, чтобы лучше узнать Rails, исходя из фона C#. Кажется, это делает неправильное действие формы с моим кодом.form_for с пользовательским действием без рендеринга
В настоящее время есть 2 модели, которые используют маршруты
resources :leaks
resources :passwords
Это должно дать мне основные маршруты:
Matts-MacBook-Pro:pwcrack-webgui mandreko$ rvm 1.9.3 do rake routes
leaks GET /leaks(.:format) leaks#index
POST /leaks(.:format) leaks#create
new_leak GET /leaks/new(.:format) leaks#new
edit_leak GET /leaks/:id/edit(.:format) leaks#edit
leak GET /leaks/:id(.:format) leaks#show
PUT /leaks/:id(.:format) leaks#update
DELETE /leaks/:id(.:format) leaks#destroy
passwords GET /passwords(.:format) passwords#index
POST /passwords(.:format) passwords#create
new_password GET /passwords/new(.:format) passwords#new
edit_password GET /passwords/:id/edit(.:format) passwords#edit
password GET /passwords/:id(.:format) passwords#show
PUT /passwords/:id(.:format) passwords#update
DELETE /passwords/:id(.:format) passwords#destroy
В моей leakscontroller.rb, у меня есть 2 способа, чтобы попробуйте создать новую утечку:
def new
@leak = Leak.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @leak }
end
end
def create
@leak = Leak.new(params[:leak])
if @leak.save
redirect_to @leak, :notice => "Successfully created leak."
else
render :action => 'new'
end
end
И, наконец, в моем new.html.erb, у меня есть:
<%= form_for @leak, :url => { :action => "create" } do |f| %>
<div class="field>
<%= f.label :source %>
<%= f.text_field :source %>
</div>
<div class="field">
<%= f.label :file %>
<%= f.file_field :file %>
</div>
<div>
<%= f.submit %>
</div>
<% end %>
Я думаю, что с этой точки зрения, было бы создать форму с действием = Создать, но следующий код генерируется:
<form accept-charset="UTF-8" action="/leaks" class="new_leak" enctype="multipart/form-data" id="new_leak" method="post">
Любой ключ, почему это будет так?
Спасибо, я не понимал, что рельсы делали магию, чтобы сделать «виртуальный» POST для/утечки/создания. Я все еще не уверен, как это работает, но это так. Моя проблема была на самом деле глубже, с моей собственной проверкой. Но это указывало мне в правильном направлении! – mandreko