Tôi đang xây dựng một ứng dụng công thức khá đơn giản để tìm hiểu RoR và tôi đang cố gắng cho phép người dùng lưu công thức bằng cách nhấp vào liên kết thay vì thông qua một biểu mẫu, vì vậy tôi đang kết nối chức năng 'create' của bộ điều khiển user_recipe thông qua một liên kết_to.link_to: action => 'create' sẽ lập chỉ mục thay vì 'create'
Thật không may, vì một số lý do, liên kết_to đang gọi hàm chỉ mục thay vì tạo.
Tôi đã viết link_to như
<%= "save this recipe", :action => 'create', :recipe_id => @recipe %>
liên kết này là trên user_recipes/index.html.erb và là cách gọi 'tạo ra' Chức năng của bộ điều khiển tương tự. Nó dường như không tạo ra sự khác biệt nếu tôi bao gồm: điều khiển hay không.
Các bộ điều khiển giống như thế này
def index @recipe = params[:recipe_id] @user_recipes = UserRecipes.all # change to find when more than one user in db respond_to do |format| format.html #index.html.erb format.xml { render :xml => @recipes } end end def create @user_recipe = UserRecipe.new @user_recipe.recipe_id = params[:recipe_id] @user_recipe.user_id = current_user respond_to do |format| if @menu_recipe.save format.html { redirect_to(r, :notice => 'Menu was successfully created.') } format.xml { render :xml => @menu, :status => :created, :location => @menu } else format.html { render :action => "new" } format.xml { render :xml => @menu.errors, :status => :unprocessable_entity } end end
Cảm ơn Sepp2k, không chỉ để cung cấp câu trả lời, mà còn giải thích lý do tại sao rõ ràng như vậy. Nó là cái gì đó tôi thực sự đấu tranh với sự hiểu biết tại sao đường ray làm hoặc mong đợi một số bit, và thường là câu trả lời trực tuyến chỉ cung cấp cho 'đây là cách nó được thực hiện' mà không có lý do tại sao. Câu trả lời của bạn là hoàn hảo! – pedalpete
'link_to {: action =>: create},: method =>: post' tạo liên kết với thuộc tính' data-method = "POST" '. Mà được sử dụng bởi các đường ray javascript để tạo ra một hình thức rời rạc và đăng nó. Không thể sử dụng các liên kết để gửi bất kỳ thứ gì ngoài các yêu cầu GET, đó là những gì xảy ra khi JS không thành công. – max