2015-12-02 184 views
0

我试图做一个AJAX请求,形成一个link_to助手,也包含params。ajax请求通过link_to与参数

<%= link_to 'Bookmark', bookmarks_path(user_id: @user.id, week_number: @week_number, year: @answers.last.created_at.year), remote: true %> 

我在控制台中看到的错误是:

ActionController::ParameterMissing - param is missing or the value is empty: bookmark: 

的另一个问题是,它触发掀起了POST和GET请求,在404 我的书签控制器都返回:

def create 
    @bookmark = current_user.bookmarks.create(bookmark_params) 
    respond_to do |format| 
     format.html { redirect_to :back } 
     format.js 
    end 
    end 

    private 

    def bookmark_params 
    params.require(:bookmark).permit(:user_id, :week_number, :year) 
    end 

这是不正确的方式去做这件事,我该如何解决我遇到的问题?

回答

0

对于通过Ajax创建书签,你需要做格式如: -

<%= form_for @bookmark, remote: true do |f|%> 
    <%= f.select :weak_number, collection_of_values %> 
    <%= f.select :year, collection_of_values %> 
<% end %> 

而且,没有必要允许user_id.So,从bookmark_params方法去除。 current_user.bookmarks将在书签记录中设置user_id。

+0

user_id实际上是必需的,我有一个实际用户创建它的外键! –

+0

是的,current_user.bookmarks将为正在创建此boorkmark的用户设置外键。 – user3506853