在 Join Table 中遇到 current_user 的问题
Trouble with current_user in Join Table
我正在开发一个名为 Languages_User 的连接 table,它拥有并属于许多语言和用户。用户是使用 gem 设计创建的。我想要填写一个表格,然后 user_id 自动填充到 Languages_User table 中。我觉得我已经尝试了一切,这似乎是一项简单的任务,但希望有人能告诉我一些问题所在:
class LanguagesUsersController < ApplicationController
def new
@languages_user = LanguagesUser.new
#@user_id = current_user
end
def create
if user_signed_in?
#@user = current_user
@languages_user = LanguagesUser.new(languages_user_params)
#@languages_user.language_id = params[:languages_user][:language_id].to_i
#@user_id = user_id.to_i
respond_to do |format|
if @languages_user.save
format.html { redirect_to @languages_user, notice: 'Proficiency was successfully created.' }
format.json { render :show, status: :created, location: @languages_user }
else
format.html { render :new }
format.json { render json: @languages_user.errors, status: :unprocessable_entity }
end
end
else
puts 'You must be logged in'
redirect_to new_languages_user_path
end
end
private
# Never trust parameters from the scary internet, only allow the white list through.
def set_languages_user
@languages_user = LanguagesUser.find(params[:id])
end
def languages_user_params
params.require(:languages_user).permit(:language_id, :level, users_attributes: [:id])
end
还有 _form.html.erb
<%= form_for(@languages_user, method: :post) do |f| %>
<% if @languages_user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@languages_user.errors.count, "error") %>prohibited this language from being saved:</h2>
<ul>
<% @languages_user.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :level %><br>
<%= f.number_field :level %>
</div>
<div class="field">
<%= f.collection_select(:language_id, Language.order('language ASC').all, :id, :language) %><br>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
这里是第一个问题,如果问的不对请见谅:)
我已经通过添加解决了它:
@languages_user = LanguagesUser.new(languages_user_params)
@languages_user.user_id = current_user.id
到我的控制器。
我正在开发一个名为 Languages_User 的连接 table,它拥有并属于许多语言和用户。用户是使用 gem 设计创建的。我想要填写一个表格,然后 user_id 自动填充到 Languages_User table 中。我觉得我已经尝试了一切,这似乎是一项简单的任务,但希望有人能告诉我一些问题所在:
class LanguagesUsersController < ApplicationController
def new
@languages_user = LanguagesUser.new
#@user_id = current_user
end
def create
if user_signed_in?
#@user = current_user
@languages_user = LanguagesUser.new(languages_user_params)
#@languages_user.language_id = params[:languages_user][:language_id].to_i
#@user_id = user_id.to_i
respond_to do |format|
if @languages_user.save
format.html { redirect_to @languages_user, notice: 'Proficiency was successfully created.' }
format.json { render :show, status: :created, location: @languages_user }
else
format.html { render :new }
format.json { render json: @languages_user.errors, status: :unprocessable_entity }
end
end
else
puts 'You must be logged in'
redirect_to new_languages_user_path
end
end
private
# Never trust parameters from the scary internet, only allow the white list through.
def set_languages_user
@languages_user = LanguagesUser.find(params[:id])
end
def languages_user_params
params.require(:languages_user).permit(:language_id, :level, users_attributes: [:id])
end
还有 _form.html.erb
<%= form_for(@languages_user, method: :post) do |f| %>
<% if @languages_user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@languages_user.errors.count, "error") %>prohibited this language from being saved:</h2>
<ul>
<% @languages_user.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :level %><br>
<%= f.number_field :level %>
</div>
<div class="field">
<%= f.collection_select(:language_id, Language.order('language ASC').all, :id, :language) %><br>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
这里是第一个问题,如果问的不对请见谅:)
我已经通过添加解决了它:
@languages_user = LanguagesUser.new(languages_user_params)
@languages_user.user_id = current_user.id
到我的控制器。