Очень важный совет, вы не должны использовать регистр верблюдов для имен переменных в Ruby, методы переменных песка должны использовать подчеркивание в качестве разделителей, если вы используете другой язык, такой как Java, старайтесь избегать использованияте же шаблоны именования, которые вы использовали там.Случай с верблюдом в ruby предназначен только для имен классов и модулей.
Я предполагаю, что вы используете Ruby on Rails 3, поскольку вы еще не сказали, что используете.Во-первых, вам нужен маршрут для этого, он будет выглядеть следующим образом в вашем файле rout.rb:
resources :messages do
member do
post 'close'
end
end
Небольшое изменение в вашем контроллере
def close
@message = Message.find(params[:id]) #you don't need to use the hidden field here
@message.completeDate = Date.today
if @message.save
redirect_to myHomeMessages_path, :flash => { :success => "Your message was closed." }
else
redirect_to myHomeMessages_path, :flash => { :error => "Error closing message." }
end
end
И ваша форма собираетсячтобы выглядеть так:
<%= form_for( @message, :url => close_message_path( @message ), :html => { :method => :post } ) do |f| %>
Are you sure you wish to close this message?<br>
<%= f.submit "Close Message" %>
<% end %>
Эта форма будет опубликована в "/ messages / ID_HERE / close", и Rails собирается установить значение "ID_HERE" в качестве параметра "id" по вашему запросу.
С полной документацией по форме можно ознакомиться здесь .