我有以下一些代码,使用带有protected_attributes gem的Rails 4.1正常工作(我没有将我的代码移到strong_parameters)
class Employee
has_and_belongs_to_many :skills
attr_accessible :skill_ids, ...
end
Run Code Online (Sandbox Code Playgroud)
class Skill
has_and_belongs_to_many :employees
end
Run Code Online (Sandbox Code Playgroud)
我在更新员工时将技能绑定到员工,因此我的视图如下所示
<%= form_for @employee, do |f| %>
.....
<%= f.collection_select :skill_ids, Skill.all, :id, :name, {},
{:multiple => true, class: 'select2 '} %>
......
<% end %>
Run Code Online (Sandbox Code Playgroud)
skill_ids是attr_accessible params的一部分,因此它在保存员工表单时工作得很好.(注意:这甚至不需要accept_nested_attributes_for:在员工模型中设置的技能)
我正在将我的代码迁移到Rails 4.2并转移到强参数.
我在employees控制器中列出了skill_ids并在更新操作上调用了这个,如下所示:
def update
@employee = Employee.find(params[:id])
@employee.update_attributes(employee_params)
end
private
def employee_params
params.require(:employee).permit(:skill_ids, .....)
end
Run Code Online (Sandbox Code Playgroud)
但它不会更新员工的技能ID.
有人可以指出我在Rails 4.2中发生了哪些变化,以保存这些关联值?
谢谢.
ruby-on-rails nested-forms has-and-belongs-to-many ruby-on-rails-4.2
我的两个rails应用程序(app1,app2)正在使用活动资源进行通信.
app1调用app2在app2中创建一个用户.app2将创建用户,并希望app1然后将用户重定向到app2的经过身份验证的页面.
从app1到app2会不断要求用户登录.
我正在寻找一种方法来避免app2中的这个登录步骤,而是让用户在第一次活动资源调用期间登录以创建用户,并以某种方式获取写入的身份验证令牌.
使用Devise完成身份验证.Devise中是否有任何支持此功能的内容?
传递身份验证令牌的方式是什么?
我希望避免在从1.9.2升级到1.9.3时尽可能重新安装gem.使用RVM管理ruby版本时是否有这样的选项?
为react-dates组件设置startDate和endDate的默认值会破坏该组件,并出现以下错误:
我的反应版本:“反应”:“ ^ 16.5.2”“反应日期”:“ ^ 18.1.0”
组件代码:
import React from 'react'
import 'react-dates/initialize';
import { DateRangePicker } from 'react-dates';
import 'react-dates/lib/css/_datepicker.css';
class DateRangeSelector extends React.Component {
constructor(props) {
super(props);
this.state = {
startDate: moment().subtract(2, 'year'),
endDate: moment(),
// focusedInput: 'startDate'
}
}
render() {
return (
<DateRangePicker
startDate={this.state.startDate} // momentPropTypes.momentObj or null,
startDateId={this.props.startDateInputId} // PropTypes.string.isRequired,
endDate={this.state.endDate} // momentPropTypes.momentObj or null,
endDateId={this.props.endDateInputId} // PropTypes.string.isRequired,
onDatesChange={({ startDate, endDate }) => this.setState({ startDate, endDate })}
isOutsideRange={() => false}
focusedInput={this.state.focusedInput} // PropTypes.oneOf([START_DATE, END_DATE]) or …Run Code Online (Sandbox Code Playgroud)