У меня есть урезанное приложение корзины покупок, в настоящее время с одной моделью «cart», идентификатор корзины хранится в сеансе.Простая единственная проблема с маршрутизацией ресурсов
телега контроллер имеет этот метод, поэтому мы всегда имеем тележку
def initialize_cart
if session[:cart_id]
@cart = Cart.find(session[:cart_id])
else
@cart = Cart.create
session[:cart_id] = @cart.id
end
end
мои маршруты файл имеет одну строку
map.resource :cart
моя корзина/показать вид выглядит следующим образом, я добавил формы, чтобы в конечном итоге я мог обновлять количество элементов, но на данный момент я просто редактирую атрибут created_at.
<% form_for(@cart) do |f| %>
<%= f.date_select :created_at %>
<p>
<%= f.submit 'Update' %>
</p>
<% end %>
<%= link_to 'Edit', edit_cart_path(@cart) %> |
<%= link_to 'Back', cart_path %>
и, наконец, мое действие обновления выглядит следующим образом:
def update
#@cart = Cart.find(params[:id])
respond_to do |format|
if @cart.update_attributes(params[:cart])
format.html { redirect_to(cart_path) }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @cart.errors, :status => :unprocessable_entity }
end
end
end
когда я внести изменения в «created_at» атрибут на странице «шоу», атрибут обновлен успешно, но когда я попадаю, я получаю bizare URL как этот
http://192.168.0.10:3000/cart.%23%3Ccart:0x23d46fc%3E
Я повозился с действием обновления, и может получить все, что нужно отлично работать, делая это
# PUT /carts/1
# PUT /carts/1.xml
def update
#@cart = Cart.find(params[:id])
#respond_to do |format|
if @cart.update_attributes(params[:cart])
redirect_to(cart_path)
# head :ok
#else
# render :action => "edit"
# render :xml => @cart.errors, :status => :unprocessable_entity }
end
#end
Его что-то связано с блоком response_to, который вызывает у него проблемы, я бы очень признателен за любую помощь, которую я могу получить с этим.
Благодаря
Это не совсем то, что я пытаюсь сделать. – dangerousdave
Пожалуйста, проверьте URL-адрес вашей формы в файле просмотра корзины/шоу, чтобы узнать, странно ли это ... – PeterWong
Это работает! но почему не работает по умолчанию form_for (@cart) ??? я не понимаю. – dangerousdave